Qu'est-ce que RESTful ?

La particularité de cette architecture est que la partie serveur et la partie client communiquent sans que le client ne connaisse la structure et le contenu des informations stockées sur le serveur.

Une API est RESTful quand elle respecte le principe d'architecture REST. Ce principe d'architecture s'applique aux services Web. La particularité principale de cette architecture est que la partie serveur (l'API) et la partie client communiquent sans que le client ne connaisse la structure et le contenu des informations stockées sur le serveur. La seule chose que les deux parties de l'application connaissent est le média qu'elles utilisent pour communiquer.

Les applications REST s'appuient sur les verbes fournis par le protocole HTTP. Ce sont des mots-clés qui définissent l'action que l'on souhaite effectuer sur une ressource. Les deux principaux sont GET et POST mais il existe également PUT, DELETE et PATCH. Le média peut être par exemple un fichier JSON ou XML.

Pour commencer la communication, le client va appeler l'URL racine de l'API, /. Requête :

GET /
Accept: application/json

Le serveur va alors lui retourner comme réponse différentes possibilités d'interactions, avec notamment des liens. Dans cet exemple, l'objet liens contient la liste des différentes interactions possibles, avec pour chacun l'URL (lien), l'intitulé de l'action (rel) et la méthode HTTP à utiliser (methode).

200 OK
Content-Type: application/json
{
version: 1.0,
liens: [
{
href: /utilisateur,
rel: lister,
methode: GET
},
{
href: /utilisateur,
rel: creer,
methode: POST
}
]
}

Le client saura alors qu'il existe deux interactions possibles : lister les utilisateurs (utiliser la méthode GET avec comme URL /user) et créer un nouvel utilisateur (utiliser la méthode POST avec comme URL /user). Les différents verbes HTTP permettent d'interagir avec les ressources. GET est utilisé pour obtenir des informations, POST pour créer une nouvelle ressource, PUT pour mettre à jour des informations pour une ressource qui existe déjà et DELETE permet de supprimer une ressource.
En effectuant une requête pour afficher la liste des utilisateurs, on peut voir les autres interactions pour un utilisateur.  Requête :

GET /user
Accept: application/json
Réponse :
{
 users: [
 {
 id: 1,
 nom: Dupont,
 prenom: Jean,
 liens: [
 {
 href: /utilisateur/1,
 rel: afficher,
 methode: GET
 },
 {
 href: /utilisateur/1,
 rel: modifier,
 methode: PUT
 },
 {
 href: /utilisateur/1,
 rel: supprimer,
 methode: DELETE
 }
 ]
 }
 ]
}

Divers