Actualités

[17/07/2014] Retrouvez la vidéo du Webinar : Etre autonome sur sa communication web

Découvrez la vidéo du webinar Ametys et Smile, pour bénéficier des retours d’expérience de la Ville de Cannes et voir comment la collectivité utilise la solution de gestion de contenu Ametys pour gérer l'ensemble de ses portails web et accroître leur visibilité.

[07/07/2014] Découvrez le nouveau site de Smile e-Commerce Performances

E-commerçants, ne laissez pas votre site ralentir votre chiffre d'affaires ! Sur le site e-Commerce Performances, découvrez comment les innovations technologiques permettent d'améliorer les performances de votre site e-commerce en Magento.

[03/07/2014] Bargento 2014 cible le top market du e-commerce

Pour la première fois, Smile et NBS System s’associent pour organiser le plus grand rassemblement français autour de la technologie Magento. Tout l'écosystème sera présent et des centaines de grands comptes utilisateurs de Magento sont attendus. L'Appel à contribution est dès à présent ouvert aux propositions de sujets de conférences.
Rendez-vous le mardi 7 octobre à Paris Espaces CAP 15 !

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