REST
- (Representational State Transfer)
- Un style architectural
PLAN
- SOA
- Pratique
- Pouf
SOA : mettre en oeuvre les services
- technique possibles pour le pourvoyeur
- TABLEAU
REST
- Roy T. Fielding
- co-auteur des standards HTTP et URI
- archtecte principal de HTTP 1.1
- co-fondateur de la fondation Apache httpd
- membre fondateur de la fondation Apache
- docteur en imformatique (Ph.D.)
- dissertation formalisant le style REST
- http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
- Source: http://roy.gbiv.com/vita.html
Comparaison
Objectif de REST
- Utiliser des moyens en place dans le Web permettant de garantir les contraintes:
- Déploiement facile;
- Adaptation aux volumes (scalability);
- Temps de réponse faible (interaction latency);
- Faible couplage
- Redondance.
- Reprise sur erreur
REST est-il utilisé ?
IMAGE
WS-* versus REST
-
Comparer ce qui est comparable
IMAGE
Extrait de http://fr.slideshare.net/kvk.pasumarthi/bicoccarestwspautassotalk
REST en 5 étapes
- Donner un ID à toute chose (ressource)
- Lier les choses les unes aux autres
- Utiliser des méthodes standards
- Autoriser * représentations par chose
- Communiquer sans état
Sur une idée de Stefan Tilkov (http://www.innoq.com/blog/st/)
1.Give Every "Thing" an ID
- http://example.com/customers/1234
- http://example.com/orders/2007/10/776654
- http://example.com/product/4554
- http://example.com/processes/sal-increase-234
2.Link Things To Each Other
23 -
*
3. Use Standard Methods
- GET : Rertieve information,possibly cached
- PUT : Uptade or create with known ID
- POST : Create or append sub-ressource
- DELETE : (Logically) remove
4.Allow for Multiple "Representations"
- GET /customers/1234
- Host: example.com
- Accept: application/vnd.mycompany.customer+xml
... - GET /customer/1234
- Host: example.com
Accept: text/x-vcard
- begin:vcard
- ...
end:vcard
5. Communicate statelessly
- IMAGE
Décrire un style architectural ?
- Recours à MEDVIDOVIC
- Components
- Connectors
- Data
Topology
IMAGE
Composants, Connecteurs, Données
-
Components
- User agents,Intermediaries,Servers
- Browsers,Spiders,Proxies,Gateways,Origin Serveurs
-
Connectors
- HTTP: a standard transfer protocol to prefer over many
-
Data
- URI: one identifier standar for all ressources
- HTML,XML,RDF,PDF,JPEG,JSON,...
- common representation formats to descibe and bind ressources
Topology
- A vertical abstraction on implementation
- IMAGE
Constraints : REST principles
-
Selon Roy T. Fielding
-
Architectural Style is a set of constraints
Constraints are hard to visualize : observed only by the effects on the others)
They are voluntary : no compilation, no architecture police, only critics when running
-
Constraints : RP1
- The key abstraction of information is a resource, named by an URI. Any information that can be named can be a resource.
Qu’est-ce qu’une ressource ?
* IMAGE1
* IMAGE2
http://www.infoq.com/articles/designing-restful-http-apps-roth
URI, URL, URN : Rappels
-
Une URI identifie une ressource :
- Soit par son nom (on parle de URN)
- Soit par son emplacement (on parle de URL)
- Une URI respecte un schéma (scheme)
-
Exemple : ressource news sur crash Ariane
-
HTTP Scheme
- http://www.genielogiciel.fr/info_crash_ariane.html
-
URN Scheme
- urn:newsml:afp.fr:19960604:xxxx
-
-
Voir aussi
- http://norman.walsh.name/2006/07/25/namesAndAddresses
# xmlns : URI |
* Un espace de noms (namespace) permet de distinguer différentes familles de noms de balises |
* xmlns désigne un identifiant (URI), pas nécessairement un fichier |
* http://www.w3.org/svg IMAGE n’est pas disponible. |
Espace de nom et shéma
- Grammaire définie dans un XML Schema (XSD).
CODE
Constraints : RP2
- The representation of a resource is a sequence of bytes, plus representation metadata [..]. The particular form of the representation can be negotiated [..]
# Rappel HTTP : Accept, MIME |
* Accept |
* L’entête HTTP porte les représentations exploitables par le client * Exemple : text/vcard (text/vcard deprecated) |
* type MIME * Content-type: type_mime_principal/sous_type_mime * Exemple : image GIF : * Content-type: image/gif * Référentiel des types MIME * http://www.iana.org/assignments/media-types/index.html |
Constraints : RP3
- All interactions are context-free – each interaction contains all the information necessary to understand the request, independent of any requests that may have preceded.
Etat sous toutes les coutures (1)
- Lutter contre les abus de languages
- Terminologie
- State
- a set of attributes belonging to an entity with a given value
- Session
- series of related messages
- Interaction
- échange d’un seul message
- State
# Etat sous toutes les coutures (2) |
* Type d’états * Session state * "Session state" refers to the state which identifies where in the series of messages a client currently is * Application State * information necessary to understand the context of an interaction * Axiomes * all messages (requests) must include all session state |
Contre-ex : stateful interaction
- Frank = client / Bob = Server
- Frank > I would like your phone number, plz.
- Bob > Who are you?
- Frank > I'm your old buddy Frank, don't you recognize me ?
-
- Bob > Oh, well then my number is 112.
- Extrait de http://rest.blueoxen.net/
Constraints : RP4
Components perform only a small set of well-defined methods on a resource producing a representation to capture the current or intended state of that resource [..]
These methods are global to the specific architectural instantiation of REST (namely HTTP on the WWW)
De pensez objet à pensez ressources
- IMAGE
# Les méthodes HTTP * Demander une ressource * GET : rapatrier une ressource * POST : envoyer des données et rapatrier une ressource * Avoir de l’information sur une ressource * HEAD : connaître ses caractéristiques * OPTIONS : connaître les options qui lui sont applicables * Mettre à jour une ressource à distance * PUT : la créer ou remplacer son contenu * DELETE : la détruire |
---|
# HTTP – codes retour |
* 100 Continue * 101 Switching Protocols * 200 OK * 201 Created * 202 Accepted * 203 Non-Authorative * 204 No Content * 205 Reset Content * 206 Partial Content * 300 Multiples Choices * 301 Moved Permanently * 302 Found * 303 See Other * 304 Not Modified * 305 Use Proxy * 307 Temporary Redirect * 400 Bad Request * 401 Unauthorized * 402 Payment Required * 403 Forbidden * 404 Not Found * 405 Method Not Allowed * 406 Not Acceptable * 407 Proxy Authentication Required * 408 Request Timeout * 409 Conflict * 410 Gone * 411 Length Required * 412 Precondition Failed * 413 Request Entity Too Large * 414 Request-URI Too Long * 415 Unsupported Media Type * 416 Requested Range Not Satisfiable * 417 Expectation Failed * 500 Internal Server Error * 501 Not Implemented * 502 Bad Gateway * 503 Service Unavailable * 504 Gateway Timeout * 505 HTTP Version Not Supported |
Constraints : RP5
- Idempotent operations and representation meta-data are encouraged in support of caching and representation reuse
Rappel : verbes HTTP
- Safe
- GET and HEAD
- Idempotent
- GET, HEAD, PUT and DELETE
- Non idempotent AND Non-safe
- POST
- Commentaire
Constraints : RP6
- The presence of intermediaries is promoted [..]
ETag
- IMAGE
REST et Cache
- Rappel : HTTP dispose d’un champ Cacheable
- IMAGE
Méthode de conception
- Quels sont les ressources (URI) ?
- Format d’échange (XML, HTML, …)
- Le protocole est TOUJOURS HTTP en REST
- Méthode (au sens HTTP) supportée par chaque URI
- Code de statut renvoyé
Artefact de conception
TABLEAU
Extrait de : http://www.la-grange.net/2005/05/rest/restful-web-01.html
Conclusion : principes
* Protocole client / serveur
* Les interactions sont sans état (stateless) et sans connexion
* Les ressources sont identifiées par des URI (une URL est un type d’URI)
* Média échangé de type MIME
Conclusion : règles de REST
- Pour respecter ces contraintes, REST fixe des règles:
- Les ressources sont manipulées par leur représentation
- Les messages échangés sont auto-descriptifs
- Difficulté
- Ce sont des conventions, que doit s’imposer le codeur responsable
Adaptation aux volumes
-
Le style REST permet de monter en puissance aussi bien :
- du côté client
- Un client tiers peut venir à la rescousse pour traiter une transition (exemple chercher code postal)
- que du côté serveur
- Dans la mesure où tout est exprimé sous forme d’URL, un serveur tiers peut récupérer l’état en copiant toutes les URLs de l’échange.
- du côté client
Standardization=>Interoperabilité
-
REST est basé sur des standards
- Addressing and naming resources -> URI
- Resource representations -> HTML, XML, GIF, JPEG, etc
- Media types -> MIME types (text/html, text/plain, etc) -----------------------------------------------------------
Annexe
- Sniffer HTTP dans le navigateur
- Firefox
- LiveHttpHeader
- Firebug
- Chrome
- Webkit (inclus de base) : menu contextuel « Inspecter l’élément »
- Firefox
Rappels HTTP
- Exemple de requête-réponse
- https://addons.mozilla.org/fr/firefox/addon/3829
- Ajoute une commande Entête HTTP en direct dans le menu Outils
- Méthodes (verbes) HTTP
- Code retour HTTP
- URI, URN, URL
- Types MIME
LiveHttpHeader (run)
- IMAGE
REST et Java
- JSR-311 du JCP
- JAX-RS: The JavaTM API for RESTful Web Services
- Mise en oeuvre
- Jersey, Restlet
- Jeu d’annotations
- IMAGE
Ressources
- RFC 2616
- Titre : Hypertext Transfer Protocol -- HTTP/1.1
- URL : http://www.faqs.org/rfcs/rfc2616.html
Copy of deck
By Eder Rafo Jose Pariona Espiñal
Copy of deck
- 656