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
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é
L Trudeau
3
HTTP et REST
RESTful HTTP SOAP
Ref: http://caharvey.deviantart.com/art/Death-Battle-Legolas-vs-Hawkeye-403741898
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
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.
L Trudeau
REST Vs. RESTful HTTP
6
HTTP et REST
L Trudeau
Style Architectural?
7
HTTP et REST
Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm
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/
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.
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
L Trudeau
Principes fondamentaux REST
11
HTTP et REST
• Sure (Safe)
• Idempotence
• Sans état
• Antémémorable (Cacheable)
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…
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
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
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();
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.
L Trudeau
RESTful HTTP
17
HTTP et REST
Est-ce que HTTP est client-serveur?
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
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/
L Trudeau
Un Outil pour vous aider
20
HTTP et REST
http://redbot.org/?descend=True&uri=http://www.etsmtl.ca
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
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
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.
L Trudeau
RESTful HTTP
24
HTTP et REST
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
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
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
…
L Trudeau
L’approche REST
28
HTTP et REST
http://api.example.com/chiens
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
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
L Trudeau
Impact sur votre conception
31
HTTP et REST
Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro
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
L Trudeau
REST Pure vs REST Pragmatique
33
HTTP et REST
Ref: https://xkcd.com/386/
XKCD Duty Calls
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
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
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

HTTP et REST

  • 1.
    Luc Trudeau Cette œuvreest 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.
    L Trudeau Attributs dequalité 2 HTTP et REST Quels attributs de qualité doivent être prédominants pour justifier une conception orientée services?  Interopérabilité  Extensibilité
  • 3.
    L Trudeau 3 HTTP etREST RESTful HTTP SOAP Ref: http://caharvey.deviantart.com/art/Death-Battle-Legolas-vs-Hawkeye-403741898
  • 4.
    L Trudeau 4 HTTP etREST 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.
    L Trudeau 5 HTTP etREST 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.
    L Trudeau REST Vs.RESTful HTTP 6 HTTP et REST
  • 7.
    L Trudeau Style Architectural? 7 HTTPet REST Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm
  • 8.
    L Trudeau Qu’est-ce qu’unstyle 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.
    L Trudeau Qu’est-ce queREST? 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.
    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.
    L Trudeau Principes fondamentauxREST 11 HTTP et REST • Sure (Safe) • Idempotence • Sans état • Antémémorable (Cacheable)
  • 12.
    L Trudeau Une méthodesure 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.
    L Trudeau Idempotence 13 HTTP etREST 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.
    L Trudeau Antémémorable (Cacheable) 14 HTTPet 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.
    L Trudeau HTTP estune instance de REST 15 HTTP et REST En Java, on pourrait exprimer cette relation de la façon suivante: REST http = new HTTP();
  • 16.
    L Trudeau Comment HTTPest-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.
    L Trudeau RESTful HTTP 17 HTTPet REST Est-ce que HTTP est client-serveur?
  • 18.
    L Trudeau RESTful HTTP 18 HTTPet 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.
    L Trudeau RESTful HTTP 19 HTTPet 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.
    L Trudeau Un Outilpour vous aider 20 HTTP et REST http://redbot.org/?descend=True&uri=http://www.etsmtl.ca
  • 21.
    L Trudeau RESTful HTTP 21 HTTPet 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.
    L Trudeau RESTful HTTP 22 HTTPet 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.
    L Trudeau RESTful HTTP 23 HTTPet 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.
  • 25.
    L Trudeau Recette RESTde 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.
    L Trudeau Pensez enterme 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.
    L Trudeau C’est Mal! 27 HTTPet 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.
    L Trudeau L’approche REST 28 HTTPet REST http://api.example.com/chiens
  • 29.
    L Trudeau L’interface uniforme 29 HTTPet 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.
    L Trudeau Singulier oupluriel? 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.
    L Trudeau Impact survotre conception 31 HTTP et REST Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro
  • 32.
    L Trudeau Associations 32 HTTP etREST Tous les chiens de Bob (GET) http://api.example.com/bob/chiens Ajouter un chien à bob (POST) http://api.example.com/bob/chiens
  • 33.
    L Trudeau REST Purevs REST Pragmatique 33 HTTP et REST Ref: https://xkcd.com/386/ XKCD Duty Calls
  • 34.
    L Trudeau Classification desAPIs 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.
    L Trudeau Les versions 35 HTTPet 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.
    L Trudeau Comment spécifierle 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