- 6 contraintes
- Client-Server Separation : chacun est indépendent l’un de l’autre, donc chacun peut évoluer comme il le veut
- Stateless : les informations du client ne sont jamais stocké sur le serveur comme ça les requêtes entrantes sont toutes indépendantes
- Cache : la réponse doit dire qu’elle peut être mise en cache comme ça le client, plus tard, peut faire appel à son cache plutôt que le serveur
- Uniform Interface
- identification of resources : la ressource doit être identifiable dans la requête (/todos/1)
- manipulation of resources through representations : dans la réponse du serveur, chaque ressource contient assez d’information pour pouvoir la modifier ou la supprimer (ie: identifiant)
- self-descriptive messages : ???
- hypermedia as the engine of application state (HATEOAS) : ajouter des liens pour effectuer d’autres actions comme ça, chaque ressource est autoportante, pas besoin de connaitre les liens
- Layered System : si le serveur doit faire plusieurs requêtes ou qu’il doit s’authentifier pour récupérer la ressource demandée alors c’est transparent pour le client 6. [Optional] Code-On-Demand : le client peut télécharger et exécuter du code venant du serveur
- REST APIs must be hypertext-driven by Roy Fielding
- Basics of REST
- REST next level : Ecrire des APIs web orientées métier (Julien Topçu)
- HTTP response status codes
- HTTP request methods
- représentation avec Hypertext Application Language (HAL) et HAL-FORMS
- semblerait les plus connu/simples
- client node https://github.com/badgateway/ketting qui connait les représentations d’avant et plus encore
- Hypermedia IRL