Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web Oriented Architecture - Developer Forum 2012

8,364 views

Published on

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

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

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 !!

×