Ceci est une ancienne révision du document !
Qu'est ce qu'une API ?
API Rest
Que signifie REST ?
Separation of Concerns (Client / Server)
L’API ReST n’est pas concernée par l’affichage, les interactions utilisateur et la session. Tous ces éléments doivent être gérés par le client (Ex. : application web frontend).
Stateless
Une API ReST ne doit pas maintenir de session ou de contexte.
La communication doit être de nature sans état, de sorte que chaque demande du client au serveur doit contenir toutes les informations nécessaires à la compréhension de la requête, et ne peut tirer profit d'aucun contexte stocké sur le serveur.
L'état de la session est donc entièrement conservé sur le client.
Cette contrainte induit les propriétés de visibilité, de fiabilité et de scalabilité.
- La visibilité est améliorée parce qu'un système de surveillance n'a pas besoin de regarder au-delà d'une seule donnée de la demande pour déterminer la nature complète de la demande.
- La fiabilité est améliorée parce qu'elle facilite la tâche de récupération après des pannes partielles.
- La scalabilité est améliorée parce que le fait de ne pas avoir à stocker l'état entre les demandes permet au composant serveur de libérer rapidement des ressources, et simplifie encore la mise en œuvre parce que le serveur n'a pas à gérer l'utilisation des ressources entre les demandes.
Layered
La présence de connecteurs intermédiaires doit être implicite pour le client et le serveur (composant de cache / sécurité etc…).
Uniforme
L’interface est uniforme à tous les niveaux. Tous les éléments (et connecteurs) communiquent en utilisant la même interface. Chaque ressource est identifiée de façon unique et canonicalisée avec son URI (URL ou URN dont voici deux exemples respectifs https://www.googleapis.com/books/v1/volumes/-DNcBAAAQBAJ et isbn:9780134051994). In order to obtain a uniform interface, multiple architectural constraints are needed to guide the behavior of components. REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; selfdescriptive messages; and, hypermedia as the engine of application state.
Cacheable
Il doit être possible de mettre les ressources en cache à tous les niveaux (front, connecteur intermédiaire, back, etc…). Il doit être possible d’utiliser les implémentations standards de cache HTTP.