HTTP et REST
-
Upload
luc-trudeau -
Category
Technology
-
view
395 -
download
1
description
Transcript of HTTP et REST
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
2
Attributs de qualité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
6
REST Vs. RESTful HTTPHTTP et REST
L Trudeau
7
Style Architectural?HTTP et REST
Photo Ref: http://inspectapedia.com/interiors/Architectural_Styles.htm
L Trudeau
8
Qu’est-ce qu’un style architecturalHTTP 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
ArchitectureGothique
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
9
Qu’est-ce que REST?HTTP et REST
REST est une description abstraiteLa conception de vos services web dépend implicitement de RESTREST 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 niveauAttention! REST n’est pas une technologie, mais bien un style architectural. Plusieurs mélangent REST et RESTful HTTP.
L Trudeau
10
Style vs. Patron?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
11
Principes fondamentaux RESTHTTP et REST
• Sure (Safe)• Idempotence• Sans état• Antémémorable (Cacheable)
L Trudeau
12
Une méthode sureHTTP 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
13
IdempotenceHTTP 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
14
Antémémorable (Cacheable)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émorableCependant, 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
15
HTTP est une instance de RESTHTTP et REST
En Java, on pourrait exprimer cette relation de la façon suivante:
REST http = new HTTP();
L Trudeau
16
Comment HTTP est-il une instance de REST?
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
17
RESTful HTTPHTTP et REST
Est-ce que HTTP est client-serveur?
Ben voyons
Tu vas pas nous enseigner
client-serveur!
L Trudeau
18
RESTful HTTPHTTP 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
19
RESTful HTTPHTTP 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
20
Un Outil pour vous aiderHTTP et REST
http://redbot.org/?descend=True&uri=http://www.etsmtl.ca
L Trudeau
21
RESTful HTTPHTTP et REST
Est-ce que HTTP possède une interface uniforme?
GET : sure, idempotent, antémémorable
PUT : idempotentDELETE : idempotentHEAD : sure, idempotentPOST
Danger!
Théorie vs.
Pratique
L Trudeau
22
RESTful HTTPHTTP 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
23
RESTful HTTPHTTP 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
24
RESTful HTTPHTTP et REST
L Trudeau
25
Recette REST de LucardoHTTP 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
26
Pensez en terme de nomsHTTP 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
27
C’est Mal!HTTP et REST
http://api.example.com/listChienshttp://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
28
L’approche RESTHTTP et REST
http://api.example.com/chiens
L Trudeau
29
L’interface uniformeHTTP 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/1234
Ajouter un chien au chien 1234erreur
Afficher chien 1234
S’il existe, modifier le chienSinon, créer le chien erreur
Effacer le chien
L Trudeau
30
Singulier ou pluriel?HTTP et REST
PLURIELhttp://api.example.com/chienshttp://api.example.com/chiens/1234
NE FAITES PAS!http://api.example.com/chienshttp://api.example.com/chien/1234
L Trudeau
31
Impact sur votre conceptionHTTP et REST
Ref: http://www.infoq.com/presentations/qcon-tilkov-rest-intro
L Trudeau
32
AssociationsHTTP 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
33
REST Pure vs REST PragmatiqueHTTP et REST
Ref: https://xkcd.com/386/
XKCD Duty Calls
L Trudeau
34
Classification des APIs HTTPHTTP 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
35
Les versionsHTTP 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
36
Comment spécifier le Format ?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 extensionhttp://api.example.com/v1/chiens.jsonhttp://api.example.com/v1/chiens.xml