HTTP et REST

1 287 vues

Publié le

Mes diapositives sur REST. Il s'agit de mon interprétation de ce que REST est devenu avec les années. J'essaie de faire le lien avec SOAP, lorsque possible (mais le thème principal n'est pas SOAP vs RESTful HTTP).

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 287
Sur SlideShare
0
Issues des intégrations
0
Intégrations
13
Actions
Partages
0
Téléchargements
57
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

HTTP et REST

  1. 1. Luc Trudeau Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International. HTTP et REST
  2. 2. L Trudeau Attributs de qualité 2 HTTP et REST Quels attributs de qualité doivent être prédominants pour justifier une conception orientée services?  Interopérabilité  Extensibilité
  3. 3. L Trudeau 3 HTTP et REST RESTful HTTP SOAP Ref: http://caharvey.deviantart.com/art/Death-Battle-Legolas-vs-Hawkeye-403741898
  4. 4. L Trudeau 4 HTTP et REST Ref: http://www.comicvine.com/forums/battles-7/legolas-vs-hawkeye-movie-versions-752101/ RESTful HTTP Extensibilité Attribut de qualité principale http://images1.wikia.nocookie.net/__cb20111011203834/marvelmovies/images/f/f0/Hawkeye_avengers_movie.JPG SOAP Interopérabilité Attribut de qualité principale
  5. 5. L Trudeau 5 HTTP et REST Lequel est le meilleur? Ça dépend! On pourrait dire : SOAP : Si vous êtes à l’intérieur d’une compagnie et votre attribut de qualité principale est l’interopérabilité. RESTful HTTP: Si vous êtes sur le web et votre attribut de qualité principale est l’extensibilité Facile! Web == !SOAP ? Non! Par exemple, Bing Search offre un service SOAP.
  6. 6. L Trudeau REST Vs. RESTful HTTP 6 HTTP et REST
  7. 7. L Trudeau Style Architectural? 7 HTTP et REST Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm
  8. 8. L Trudeau Qu’est-ce qu’un style architectural 8 HTTP et REST • Une description abstraite • La conception dépend implicitement du style architectural • Limite les possibilités sur les stratégies de conception (contraintes) • Fournit un cadre et un vocabulaire pour les éléments d’une conception de haut niveau Architecture Gothique Documenting Software Architecture 2e édition Software Design, Budgen 2e édition LOG430/MGL802/MGL844 Ref : http://www.vam.ac.uk/content/articles/g/gothic-architecture/
  9. 9. L Trudeau Qu’est-ce que REST? 9 HTTP et REST REST est une description abstraite La conception de vos services web dépend implicitement de REST REST limite les possibilités sur les stratégies de conception (contraintes) REST fournit un cadre et un vocabulaire pour les éléments d’une conception de haut niveau Attention! REST n’est pas une technologie, mais bien un style architectural. Plusieurs mélangent REST et RESTful HTTP.
  10. 10. L Trudeau Style vs. Patron? 10 HTTP et REST Un style est moins rigide et plus général qu’un patron  Le patron est plus rigide, car il vise à résoudre un problème en fonction d’un contexte  Le style est moins rigide, car il s’agit d’une approche ou une façon de faire. Le patron observateur Photo Ref: http://en.wikipedia.org/wiki/Observer_pattern Photo Ref: http://msdn.microsoft.com/en-us/library/bb972931.aspx Le style en couches
  11. 11. L Trudeau Principes fondamentaux REST 11 HTTP et REST • Sure (Safe) • Idempotence • Sans état • Antémémorable (Cacheable)
  12. 12. L Trudeau Une méthode sure 12 HTTP et REST Une méthode sure :  N’effectue aucune action significative autre que l’obtention d’information  Ne génère pas d’effets collatéraux Ref: RFC2616 http://www.ietf.org/rfc/rfc2616.txt Exemple: Une requête pour effacer une ressource n’est pas sure. http://www.monservice.com/delete?=1234 Imaginez un “crawler” qui trouve ce lien…
  13. 13. L Trudeau Idempotence 13 HTTP et REST Les effets collatéraux de N > 0 demandes sont les mêmes que pour une seule demande Ref:http://www.youtube.com/watch?v=6dVNdFwqeKs&feature=c4-overview&list=UUzaZL1VLtdVTiZ8k07z65jg
  14. 14. L Trudeau Antémémorable (Cacheable) 14 HTTP et REST Une réponse est antémémorable si elle peut être conservée à l’intérieure d’une antémémoire 2 + 2 = 4 (toujours, même quand il pleut) La réponse à cette requête est antémémorable Une requête pour la température n’est pas antémémorable Cependant, je peux la conserver dans un cache pour une courte période de temps (Eventual Consistency). Pour plus d’info : http://en.wikipedia.org/wiki/Eventual_consistency
  15. 15. L Trudeau HTTP est une instance de REST 15 HTTP et REST En Java, on pourrait exprimer cette relation de la façon suivante: REST http = new HTTP();
  16. 16. L Trudeau Comment HTTP est-il une instance de REST? 16 HTTP et REST REST impose 5 contraintes  Architecture Client Serveur  Architecture en couche  Serveur sans-état  Identification des éléments Antémémorable (Cacheable)  Interface uniforme • Requêtes par ressource • Manipulation par ressource • Messages autodescriptifs • Hypermédia pour représenter l’état (HATEOAS) En fait il y en a 6, mais le code sur demande est optionnel. Alors, concentrons-nous sur l’essentiel.
  17. 17. L Trudeau RESTful HTTP 17 HTTP et REST Est-ce que HTTP est client-serveur?
  18. 18. L Trudeau RESTful HTTP 18 HTTP et REST Est-ce que HTTP est en couche? À quel niveau se trouve-t-il? Pourquoi n’est-il pas au niveau 5? Qu’est-ce que ça implique d’être au niveau 7? Ref: http://www.cubrid.org/files/attach/images/220547/186/504/http_vs_spdy.png
  19. 19. L Trudeau RESTful HTTP 19 HTTP et REST Est-ce possible d’identifier les éléments antémémorable? Oui! Comment?  Pragma: no-cache HTTP  Expires: Fri, 30 Oct 1998 14:19:41 GMT  Cache-Control: max-age=3600, must-revalidate Ref: http://www.mnot.net/cache_docs/
  20. 20. L Trudeau Un Outil pour vous aider 20 HTTP et REST http://redbot.org/?descend=True&uri=http://www.etsmtl.ca
  21. 21. L Trudeau RESTful HTTP 21 HTTP et REST Est-ce que HTTP possède une interface uniforme? GET : sure, idempotent, antémémorable PUT : idempotent DELETE : idempotent HEAD : sure, idempotent POST Danger! Théorie vs. Pratique
  22. 22. L Trudeau RESTful HTTP 22 HTTP et REST Est-ce que HTTP est sans état? Oui! Mais ma session Gmail? Elle est avec état et utilise HTTP. L’état n’est pas fourni par le protocole HTTP, et le protocole n’est pas conçu en fonction de cette session, c’est le serveur qui gère cet état Alors, je peux faire ce que je veux sur le serveur? Oui, mais ça ne sera pas « RESTful ». Quand qu’on dit qu’on dit qu’un « RESTful HTTP Service » ceci implique que le service respect les contraintes REST et par le fait même celles de HTTP
  23. 23. L Trudeau RESTful HTTP 23 HTTP et REST Alors Gmail n’est pas REST? Mais je pensais que Google utilisait REST? En ce qui concerne Gmail, je ne peux pas répondre, mais REST ne veut pas dire sans-état, mais bien serveur sans- état. Il peut y avoir des états sur le client. Une autre approche est d’inclure l’état à la requête. Oui, mais je gaspille de la bande passante! C’est un compromis entre la bande passante, les ressources sur le serveur et l’usage d’antémémoire. Cependant, ce choix s’aligne avec les attributs de qualités de REST.
  24. 24. L Trudeau RESTful HTTP 24 HTTP et REST
  25. 25. L Trudeau Recette REST de Lucardo 25 HTTP et REST Voici une recette facile pour transformer vos services en services REST • Identifiez les ressources et concevez vos URI • Choisissez vos formats • Identifiez les méthodes et leur sémantique • Choisissez vos codes de réponses
  26. 26. L Trudeau Pensez en terme de noms 26 HTTP et REST En REST on ne pense pas en terme d’opérations ou d’action En REST on pense en terme de noms et d’identifiants
  27. 27. L Trudeau C’est Mal! 27 HTTP et REST http://api.example.com/listChiens http://api.example.com/getChien?id=1234… http://api.example.com/newChien?id=1234… http://api.example.com/setChien?id=1234… http://api.example.com/listChienRouge …
  28. 28. L Trudeau L’approche REST 28 HTTP et REST http://api.example.com/chiens
  29. 29. L Trudeau L’interface uniforme 29 HTTP et REST Ressource POST GET PUT DELETE /chiens Créer un nouveau chien Liste de tous les chiens Remplacer les chiens par d’autres chiens Effacer tous les chiens /chiens/123 4 Ajouter un chien au chien 1234 erreur Afficher chien 1234 S’il existe, modifier le chien Sinon, créer le chien erreur Effacer le chien
  30. 30. L Trudeau Singulier ou pluriel? 30 HTTP et REST PLURIEL http://api.example.com/chiens http://api.example.com/chiens/1234 NE FAITES PAS! http://api.example.com/chiens http://api.example.com/chien/1234
  31. 31. L Trudeau Impact sur votre conception 31 HTTP et REST Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro
  32. 32. L Trudeau Associations 32 HTTP et REST Tous les chiens de Bob (GET) http://api.example.com/bob/chiens Ajouter un chien à bob (POST) http://api.example.com/bob/chiens
  33. 33. L Trudeau REST Pure vs REST Pragmatique 33 HTTP et REST Ref: https://xkcd.com/386/ XKCD Duty Calls
  34. 34. L Trudeau Classification des APIs HTTP 34 HTTP et REST WS-* Web Services (SOAP) RPC URI-Tunneling (flickr 'REST' API) API exposé par ressources, mais les actions proviennent de paramètres dans l’URI HTTP-based (Twitter, Google Calendar) API exposé par ressources, Méthodes HTTP utilisées, utilisation de types génériques REST (Open Search) Réf: http://nordsc.com/ext/classification_of_http_based_apis.html#uri-rpc Ref: http://martinfowler.com/articles/richardsonMaturityModel.html
  35. 35. L Trudeau Les versions 35 HTTP et REST Comment spécifier la version d’un API REST? Conseil :  Insérer la version dans l’URL  Les plus à gauche possible Par exemple : http://api.example.com/v1/chiens
  36. 36. L Trudeau Comment spécifier le Format ? 36 HTTP et REST Une approche REST pure utilise l’entête Accept: Accept: application/json Plusieurs approches utilisent un paramètre ?type=json Conseil: ajouter le format à l’URL pour simuler une extension http://api.example.com/v1/chiens.json http://api.example.com/v1/chiens.xml

×