Web Oriented Architecture 
Comment construire son API avec les principes du 
web ?
WWW 
‣ WWW, un succès ! 
‣ WWW, des principes ! 
‣ WWW, un modèle ! 
‣ WWW et le REST ! 
World Wide Web map
Le Speaker 
Scala & Java & Web development addict ! 
http://twitter.com/xcapetir sur Twitter 
http://blog.xavier-carpentie...
Agenda 
‣ Intro : Hyper-flexibilité ? 
‣ Contexte WEB 
‣ WOA, ROA ou REST ? 
‣ DEMO 
‣ Questions ?
Intro 
‣ Tim Bernes Lee 
API = Architectures
Intro 
API = Architectures
Intro 
Hyperflexibilité
Intro 
Hyperflexibilité
Simplicité, Simplicité, Simplicité, 
Simplicité, Simplicité, Simplicité...
WWW
WWW
WWW 
‣ Inventé par Tim Bernes Lee 
‣ Agé de + 20 ans et toujours aussi performant ;-) 
‣ Frustration ! 
I'd 
like you to p...
WWW : LinkedData 
‣ Autre frustration : il n’y a pas de DATAs 
‣ LinkedData 
I'd like you to 
put your DATAs 
on the Web
RAW! 
DATA! 
NOW T. B. Lee
WWW ?
World Wide Web ? 
‣ Liens 
‣ Documents 
‣ Protocoles 
URI 
HTML 
HTTP
World Wide Web ~ URI 
Universal Resource Identifier 
Adresse d’un document 
Identifiant unique 
Relations entre documents ...
World Wide Web ~ 
Documents 
Représentation 
HTML (affichages) 
XML, JSON (data)
World Wide Web ~ 
Protocoles (HTTP, ...) 
La couche de transport 
Verbes : GET, POST, ... 
Codes de retours : 200, 500, 40...
Informations { 
{{ 
Succès 
Redirection 
Erreur du client{ 
} Erreurs 
du client 
} Erreurs 
du serveur
WOA, ROA ou REST ?
Web Style Architecture 
WOA = Web Oriented 
Architecture 
SOA = Service Oriented 
Architecture 
= 
REST
SOA ? 
SOA = Service Oriented Architecture 
Style d’architecture en services à fine granularité 
http://www.youtube.com/wa...
SOA ? 
SOA => SOAP 
SOAP = protocole pour faire du SOA 
SOAP = WSDL, WS-*
Fonctionnalités Sous-systèmes Système 
Modèle structurés 
• Liens 
• Documents 
• Protocoles 
Echelle 
70s 
80s 
90s 
2000...
WOA
WOA
REST !
REST ? 
REpresentational State Transfert 
Auteur Roy Fielding en 2000 
L’architecture Web est suffisante !!
REST, c’est ... 
Architecture qui s’inspire du WEB 
Style d’architecture 
Simplification 
Une alternative aux architecture...
REST, ce n’est pas... 
Un protocole 
Une sur-couche du Web
REST 
Modéle vide 
Client-Server 
Sans état (Stateless) 
Cache 
Interface Uniforme HTTP 
...
REST - Définition 
Une architecture client/serveur en couches 
avec inter face uniforme, 
cache 
et sans état.
Eléments de REST
Principes de REST 
Adressabilité 
Un ensemble fini d’opération : POST, GET, PUT, DELETE 
Orienté représentation : content ...
Principes de REST 
HATEOAS 
Hypermedia As The Engine Of Application State
REST pratique !
Méthodes HTTP 
GET 
PUT 
POST 
DELETE 
Pour retrouver une information, peut être mis en cache 
Créer avec un ID connu 
Cré...
Pensez différemment, 
pensez RESSOURCES
Exemple - GET 
Exemple d’une API de gestion de contacts 
GET /contacts/! 
Retourne tous les contacts 
GET /contacts/1234! ...
Exemple - POST 
POST /contacts/! 
Créé un contact 
Les données sont envoyées dans le corps de la 
requête
Exemple - PUT 
PUT /contacts/1234! 
Mise à jour du contact 
Les données sont envoyées dans le corps de 
la requête
Exemple - DELETE 
DELETE /contacts/1234! 
Suppression du contact 1234 
DELETE /contacts/! 
Suppression de tous les contact...
Autres exemples
Exemple de requête/ 
réponse 
> POST /contacts/ HTTP/1.1 
> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7...
ROA, exemple existant de 
service
il REST les outils !
REST - outils Peu d’outils sont 
nécessaires ou 
disponibles 
puisque REST est 
un ensemble de 
pratiques... Développement...
REST - Frameworks (Java) 
Play Framework 
Framework Web REST en Java et Scala, fullstack, 
ultra DX (Developer eXperience)...
REST - Frameworks (Python/ 
Ruby) Ruby on Rails 
Framework Web en Ruby pour la création de 
services RESTful (MVC) 
Ruby W...
Pour ou REST contre ?
Contre :-( 
REST ne définit aucun élément de sécurité 
REST implique un important changement de 
paradigme 
REST implique ...
Pour :-) 
Simplification! 
Hypertext est un standard 
Simplification! 
L’identification est un standard (URI) 
Simplificat...
Synthèse - RESTful ou pas ? 
(Restfarian)
Synthèse - Bonnes pratiques 
pour construire son API REST
Sources & Livres 
Thèse de Roy Fielding 
http://www.ics.uci.edu/~fielding/pubs/
DEMO 
https://github.com/xcarpentier/address_book_api
Q&A
Merci ! 
Xavier Carpentier 
Freelance Full Stack Web Application Developer 
@xcapetir 
contact@xavier-carpentier.com !!
Prochain SlideShare
Chargement dans…5
×

Web Oriented Architecture - Developer Forum 2012

8 303 vues

Publié le

Web Oriented Architecture, Comment construire son API avec les principes du web ?
by @xcapetir

Présentation données lors du Developer Forum 2012.

2 commentaires
3 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
8 303
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 084
Actions
Partages
0
Téléchargements
34
Commentaires
2
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • \n
  • \n
  • \n
  • \n
  • \n
  • Ancien\net\nModerne\n\n
  • Moderne par dessus l’ancien\n
  • Un balcon au cas ou on mettrais une fenêtre...\n
  • Test\n
  • - La parcimonie est un principe consistant à n'utiliser que le minimum de causes élémentaires pour expliquer un phénomène.\n- L’univers du logiciel est instable\n- Les nouvelles techologies ont adoptées une fréquence proche de la vitesse de la lumiére\n- On ne peut plus ce permettre l’hyperflexibilité\n- Il faut savoir faire et défaire vite\n- Il faut penser à construire pour mieux détruire et reconstruire\n
  • \n
  • Le web est a l’origine d’une frustration : énormément de document dans des formats différents au CERN\n\n
  • Une autre frustration : il n’y a pas de donées PUR sur le web...\n\n
  • Message reçu ?\nLa construction dAPI va dans la même direction ...\nConstruire une API est une solution au RAW DATA NOW, au Linked Data...\nMais il faut la construire pour qu’elle soit intelligible par le WEB !!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Le client interagit avec une application de réseau entièrement par l'hypermédia fournies dynamiquement par les serveurs d'applications\n\nUn client REST n'a pas besoin de connaissances préalables sur la façon d'interagir avec une application particulière ou d'un serveur-delà d'une compréhension générique de l'hypermédia\n\nLa contrainte HATEOAS sert à découpler le client et le serveur d'une manière qui permet au serveur d'évoluer fonctionnalité indépendamment.\n\n\n\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Web Oriented Architecture - Developer Forum 2012

    1. 1. Web Oriented Architecture Comment construire son API avec les principes du web ?
    2. 2. WWW ‣ WWW, un succès ! ‣ WWW, des principes ! ‣ WWW, un modèle ! ‣ WWW et le REST ! World Wide Web map
    3. 3. Le Speaker Scala & Java & Web development addict ! http://twitter.com/xcapetir sur Twitter http://blog.xavier-carpentier.com contact@xavier-carpentier.com GitHub : https://github.com/xcarpentier LinkedIn : http://www.linkedin.com/in/xcarpentierjava
    4. 4. Agenda ‣ Intro : Hyper-flexibilité ? ‣ Contexte WEB ‣ WOA, ROA ou REST ? ‣ DEMO ‣ Questions ?
    5. 5. Intro ‣ Tim Bernes Lee API = Architectures
    6. 6. Intro API = Architectures
    7. 7. Intro Hyperflexibilité
    8. 8. Intro Hyperflexibilité
    9. 9. Simplicité, Simplicité, Simplicité, Simplicité, Simplicité, Simplicité...
    10. 10. WWW
    11. 11. WWW
    12. 12. WWW ‣ Inventé par Tim Bernes Lee ‣ Agé de + 20 ans et toujours aussi performant ;-) ‣ Frustration ! I'd like you to put your documents on the
    13. 13. WWW : LinkedData ‣ Autre frustration : il n’y a pas de DATAs ‣ LinkedData I'd like you to put your DATAs on the Web
    14. 14. RAW! DATA! NOW T. B. Lee
    15. 15. WWW ?
    16. 16. World Wide Web ? ‣ Liens ‣ Documents ‣ Protocoles URI HTML HTTP
    17. 17. World Wide Web ~ URI Universal Resource Identifier Adresse d’un document Identifiant unique Relations entre documents Un document peut contenir plusieurs liens de documents
    18. 18. World Wide Web ~ Documents Représentation HTML (affichages) XML, JSON (data)
    19. 19. World Wide Web ~ Protocoles (HTTP, ...) La couche de transport Verbes : GET, POST, ... Codes de retours : 200, 500, 404, ... Header : méta-informations !
    20. 20. Informations { {{ Succès Redirection Erreur du client{ } Erreurs du client } Erreurs du serveur
    21. 21. WOA, ROA ou REST ?
    22. 22. Web Style Architecture WOA = Web Oriented Architecture SOA = Service Oriented Architecture = REST
    23. 23. SOA ? SOA = Service Oriented Architecture Style d’architecture en services à fine granularité http://www.youtube.com/watch?v=sbd_1G8Kqjs !
    24. 24. SOA ? SOA => SOAP SOAP = protocole pour faire du SOA SOAP = WSDL, WS-*
    25. 25. Fonctionnalités Sous-systèmes Système Modèle structurés • Liens • Documents • Protocoles Echelle 70s 80s 90s 2000s 2010s Code opère Donnée Système de système Modèle Objet CDoodnenée Stateful Distribué Stateless Service Donnée Modèle Service Modèle Web Ressour Code
    26. 26. WOA
    27. 27. WOA
    28. 28. REST !
    29. 29. REST ? REpresentational State Transfert Auteur Roy Fielding en 2000 L’architecture Web est suffisante !!
    30. 30. REST, c’est ... Architecture qui s’inspire du WEB Style d’architecture Simplification Une alternative aux architectures complexes (ex: J2EE) Une philosophie qui supprime l’hyperflexibilité et la lourdeur
    31. 31. REST, ce n’est pas... Un protocole Une sur-couche du Web
    32. 32. REST Modéle vide Client-Server Sans état (Stateless) Cache Interface Uniforme HTTP ...
    33. 33. REST - Définition Une architecture client/serveur en couches avec inter face uniforme, cache et sans état.
    34. 34. Eléments de REST
    35. 35. Principes de REST Adressabilité Un ensemble fini d’opération : POST, GET, PUT, DELETE Orienté représentation : content type Communication sans état
    36. 36. Principes de REST HATEOAS Hypermedia As The Engine Of Application State
    37. 37. REST pratique !
    38. 38. Méthodes HTTP GET PUT POST DELETE Pour retrouver une information, peut être mis en cache Créer avec un ID connu Créer des ressources ou appender des sous ressources Suppression (logique) d’une ressource Il existe d’autres verbes pouvant être utilisés HEAD, OPTIONS, etc.
    39. 39. Pensez différemment, pensez RESSOURCES
    40. 40. Exemple - GET Exemple d’une API de gestion de contacts GET /contacts/! Retourne tous les contacts GET /contacts/1234! Retourne le contact ayant 1234 comme identifiant
    41. 41. Exemple - POST POST /contacts/! Créé un contact Les données sont envoyées dans le corps de la requête
    42. 42. Exemple - PUT PUT /contacts/1234! Mise à jour du contact Les données sont envoyées dans le corps de la requête
    43. 43. Exemple - DELETE DELETE /contacts/1234! Suppression du contact 1234 DELETE /contacts/! Suppression de tous les contacts
    44. 44. Autres exemples
    45. 45. Exemple de requête/ réponse > POST /contacts/ HTTP/1.1 > User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/ 1.2.3 > Host: localhost:8080 > Accept: */* > Content-Length: 61 > Content-Type: application/x-www-form-urlencoded ! < HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < Content-Type: application/xml < Content-Length: 184 < Date: Thu, 24 May 2012 10:11:34 GMT ! <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <contact> <email>contact@xavier-carpentier.com</email> <firstName>Xavier</firstName> <id>0</id> <lastName>Carpentier</lastName> </contact>
    46. 46. ROA, exemple existant de service
    47. 47. il REST les outils !
    48. 48. REST - outils Peu d’outils sont nécessaires ou disponibles puisque REST est un ensemble de pratiques... Développement Eclipse, Netbeans, Visual Studio (C/C++), etc. Edition Eclipse, Notepad++, XMLSpy, etc. Test RestClient, curl, navigateurs web
    49. 49. REST - Frameworks (Java) Play Framework Framework Web REST en Java et Scala, fullstack, ultra DX (Developer eXperience) JSR311 Pas une grande valeur ajoutée par rapport au REST pur... JAX-RS, API Java de support aux développements de services Web RESTful Jersey Implémentation de référence JAX-RS / JSR311
    50. 50. REST - Frameworks (Python/ Ruby) Ruby on Rails Framework Web en Ruby pour la création de services RESTful (MVC) Ruby Waves Framework Ruby MVC d’exposition de Services Web REST TurboGears Framework Applications Web (Python). Exposition base de donnée avec un contrôleur REST
    51. 51. Pour ou REST contre ?
    52. 52. Contre :-( REST ne définit aucun élément de sécurité REST implique un important changement de paradigme REST implique de penser différement, penser
    53. 53. Pour :-) Simplification! Hypertext est un standard Simplification! L’identification est un standard (URI) Simplification!
    54. 54. Synthèse - RESTful ou pas ? (Restfarian)
    55. 55. Synthèse - Bonnes pratiques pour construire son API REST
    56. 56. Sources & Livres Thèse de Roy Fielding http://www.ics.uci.edu/~fielding/pubs/
    57. 57. DEMO https://github.com/xcarpentier/address_book_api
    58. 58. Q&A
    59. 59. Merci ! Xavier Carpentier Freelance Full Stack Web Application Developer @xcapetir contact@xavier-carpentier.com !!

    ×