REpresentational State Transfer

Principes clés

Principes clés

L'architecture Rest s'articule autour de quatres principes clés

Une ressource distribuée

Avec Rest, nous sommes dans un monde distribués. L'objectif de Rest c'esst d'offir un moyen pour manipuler et effectuer des actions sur ces différentes ressources aux travers du protocole HTTP. Une "Action" Rest s'effectue en plusieurs étatpes. Tout d'abord le client veut acceder a une ressource à travers les différents verbes HTTP. Il envoie donc une requete HTTP au serveur en présisant une URL particulère qui correspond a la ressource. Le servuer traite la requete et génère une représentation de la ressource qu'il va renvoyer au client accompagné d'un code HTTP.


Un échange client-serveur en Rest

Un identifiant de la ressource

Avec le Rest, on utilise le protocole HTTP. On va donc naturellement utiliser les URL (Uniforme Ressource Locator) afin de pouvoir executer des actions sur des ressources distantes. Il existe deux types d'URL :

Si je veux accéder a une ressource qui correspond à tous les livres d'une bibliothèque : http://mywebsite.com/books
Si je veux accéder a une ressouce qui est le livre avec d'isbn de 87 de ma bibliothèque : http://mywebsite.com/books/87
Si je veux accéder a une ressource qui correspond aux commentaires d'un livre de ma bibliothèque : http://mywebsite.com/books/87/comments

Les verbes HTTP

Le troisième principe d’une architecture REST est d’utiliser les verbes HTTP existants plutôt que d’inclure l’opération dans l’URI de la ressource. Ainsi, généralement pour une ressource, il y a 4 opérations possibles (CRUD) :

HTTP propose les verbes correspondant :

Une représentation de la ressouce

Le serveur ne renvoie pas une ressource mais une représentation de la ressource. Avec Rest, contrairement a SoAP, il n'y a pas de format d'échange imposé. L'entete HTTP de la réponse contient le type Mime de la ressource ( champ Content Type de l'entête HTTP). De ce fait, une ressource peut avoir plusieurs représentations possibles.

Exemple


Une ressource en Json