Actualités

[16/10/2014] L'édition 2014 du livre blanc de Smile : "Bonnes pratiques du web"

Smile publie une nouvelle version du livre blanc "Bonnes pratiques du web – Toutes les clés pour concevoir son site web". A télécharger gratuitement !

[14/10/2014] Smile vous donne RDV sur les forums de recrutement de 2014-2015 !

Vous aimez le web et les technologies de pointe, vous souhaitez mettre votre expertise au service du meilleur de l’open source ? Venez rencontrer Smile durant les prochains forums écoles de cette année 2014-2015.

[13/10/2014] Smile, partenaire de la 7ème édition de l'Open World Forum

L’Open World Forum 2014 se tiendra les 30 et 31 Octobre à l’Eurosites George V, à Paris. Pour cette édition, la ligne force est : "Take Back Control". Inscriptions gratuites !

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

REST, une affaire de style

REST n'est ni un langage ni un protocole. REST est un style d'architecture client/serveur inventé par Roy Fielding. Dans ce style d'architecture, des services exposent les fonctionnalités à travers un ensemble de ressources identifiables, et proposent des méthodes pour accéder et manipuler l'état de ces ressources.

Les principes de REST :

  • Ressource : quelque chose d'identifiable (un article, un fichier, une personne, ...)
  • Représentation des ressources : c'est le format d'échange entre le client et le serveur.
  • URI (Uniform Resource Identifier) est utilisé pour adresser les ressources.
  • HTTP est le protocole de communication entre le client et le serveur. La communication est sans état : le serveur ne conserve pas l'état du client

Ressources

En général, les ressources sont représentés en XML, json ou YAML, mais ca peut être du texte, une image, ... tout dépend du besoin. Une même ressource peut être représentée sous différent format, le service choisit le bon format en fonction des Types MIME supportés par le client, d'un paramètre ,...

URI

L'URI permet d'adresser une ressource, c'est à dire la nommer et l'identifier. Par exemple :

  • http://server/articles correspond à la ressource liste d'articles
  • http://server/articles/article-rest correspond à l'article dont l'identifiant est article-rest
  • http://server/articles/article-rest/commentaires correspond aux commentaires de l'article article-rest

Protocole HTTP

REST s'appuie sur les "verbes" HTTP pour définir les actions des services :

  • GET : Lire une ressource, équivalent d'un SELECT SQL.
  • DELETE : Supprimer une ressource, équivalent d'un DELETE SQL
  • PUT : Stocker la ressource envoyé dans la requête, équivalent d'un DELETE puis INSERT SQL.
  • POST : Demander au serveur de créer, mettre à jour ou exécuter un traitement sur une ressource. (pas d'équivalent SQL)

Les méthodes PUT et POST semblent à première vue similaire car elles permettent de créer et mettre à jour des ressources. La différence se situe au niveau de la définition même des 2 méthodes dans la norme HTTP :

  • PUT : L'URI représente la ressource à stocker. L'entité complète est transmise dans la requête, et le serveur stocke cette entité à l'adresse spécifiée. Si la ressource n'existe pas, la ressource est créée, sinon la ressource est remplacée. De plus, PUT est idempotent, ie "ne change pas quand on le multiplie par soi-même". L'état d'une ressource sera identitique après un ou plusieurs PUT successifs de la même entité.
  • POST : l'URI représente la ressource pour laquelle l'entité transmise devrait être considérée comme un subordonné, et le service détermine le traitement à effectuer. En d'autres termes, le service effectue un traitement sur les données transmises dans le POST. Par exemple, l'entité transmise peut être un fichier, la ressource un répertoire et le service consiste à ajouter le fichier dans le répertoire. A l'inverse de PUT, plusieurs POST n'auront pas le même effet qu'un seul POST.

Conclusion

Contrairement à d'autres services distants de type RPC (Remote Procedure Call) qui exposent des méthodes, REST expose des ressources. Les méthodes HTTP standard permettent alors de manipuler les ressources. Ainsi, à partir de l'URI d'une ressource, GET permettra de lire la ressource, DELETE de la supprimer ....et ceci de manière universelle pour toutes les ressources.

Alexis Thaveau
picto