REST - REpresentational State Transfer

REST est un moyen d'accéder aux documents et aux ressources distants selon une architecture logicielle simple, représentée par une API. On dit "RESTful" les sites utilisant ce modèle de communication.

La définition du nom: Representational State Transfer peut se comprendre comme la description d'un mode de transfert où chaque requête reprend toutes les informations nécessaires à la communication entre le client et le serveur (en général il s'agit d'une URL et de paramètres selon le mode GET ou POST). Le client envoie une requête et obtient une représentation de la ressource dans son état actuel.
Par exemple si le client veut recevoir une page, il envoie l'URL de celle-ci au serveur. Le serveur la considère comme une ressource qu'il prend dans son état actuel (le document désigné par l'URL peut évoluer, spécialement si c'est une page web) et envoie une copie au client, une représentation de l'état courant.
Evidemment ce choix de termes a fait l'objet d'une certaine cogitation par l'auteur du modèle (Roy Fielding), afin d'aboutir au nom REST, qui signifie "être au calme" en anglais et qui est l'idée qu'il a voulu donner: un système simple et sûr.

Le Web (World Wide Web) est une application de l'architecture REST, cela jusqu'à l'arrivée de WebSocket et WebRTC. Pour autant, l'architecture REST n'utilise pas nécessairement HTTP ou le Web.

Architecture REST

Les alternatives sont SOAP, RPC, avec XML ou JSON pour le format de fichier.
Ainsi que WebSockets. Il permet les notifications par le serveur, ce qui n'entre pas dans le cadre de l'architecture REST. Il convient mieux pour les échanges rapides et constants, et REST plus économe en bande passante, convient pour des requêtes plus ponctuelles.

Comment fonctionne REST

Son architecture se définit ainsi:
- Les états et fonctions d'une application distante sont considérées comme des ressources.
- Chaque ressource est accessible uniquement selon un format d'adresse standard. Ce sont des liens hypertextes (ou hypermedia). Sous HTTP se sera une URI.
- Les ressources ont une interface standard dans laquelle les opérations et types de données sont précisément définis. XML ou JSON par exemple, ou HTML.
- L'échange de données se fait selon un protocole qui a les propriétés suivantes:

- Indépendance de l'interface aux services ajoutés tels que proxies, firewalls et autres.

Commandes HTTP

Des commandes HTTP permettent d'accéder aux ressources d'un serveur.
GET pour requérir des données, par exemple charger une page, en envoyant des paires clé/valeur dans l'URL.
POST pour envoyer des données au serveur, par exemple les données d'un formulaire, dans le message HTTP (et non l'URL) où un script les traite.
D'autres commandes existent encore mais sont peu utilisées: PUT (remplacer) et DELETE (effacer).
L'utilisation de cookies de session, en conservant des données relative au service, annule la propriété "sans état" et peut rendre le service moins efficace.

Avantages de REST

Inconvénients

Références et ressources: Thèse de Roy-Fielding. Traduction du document qui a inspiré l'architecture REST. Original en anglais.