REST
est un style architectural et un design pour les architectures logicielles basées sur le réseau.
REST
les concepts sont appelés ressources. Une représentation d'une ressource doit être sans état. Il est représenté via un type de média. Comprennent quelques exemples de types de médias XML
, JSON
et RDF
. Les ressources sont manipulées par des composants. Les composants demandent et manipulent les ressources via une interface uniforme standard. Dans le cas de HTTP, cette interface se compose d'opérations HTTP standard par exemple GET
, PUT
, POST
, DELETE
.
REST
est généralement utilisé plus HTTP
, principalement en raison de la simplicité de HTTP et de son mappage très naturel aux principes RESTful. REST n'est cependant lié à aucun protocole spécifique.
Principes fondamentaux de REST
Communication client-serveur
Les architectures client-serveur ont une séparation très distincte des préoccupations. Toutes les applications construites dans le style RESTful doivent également être en principe client-serveur.
Apatride
Chaque demande client adressée au serveur nécessite que son état soit entièrement représenté. Le serveur doit être capable de comprendre complètement la demande du client sans utiliser de contexte de serveur ou d'état de session du serveur. Il s'ensuit que tous les états doivent être conservés sur le client. Nous aborderons plus en détail la représentation sans état plus tard.
Cacheable
Des contraintes de cache peuvent être utilisées, permettant ainsi aux données de réponse d'être marquées comme pouvant être mises en cache ou non mises en cache. Toutes les données marquées comme pouvant être mises en cache peuvent être réutilisées comme réponse à la même demande ultérieure.
Interface uniforme
Tous les composants doivent interagir via une seule interface uniforme. Étant donné que toutes les interactions des composants se produisent via cette interface, l'interaction avec différents services est très simple. L'interface est la même! Cela signifie également que les modifications d'implémentation peuvent être effectuées de manière isolée. De tels changements n'affecteront pas l'interaction fondamentale des composants car l'interface uniforme est toujours inchangée. Un inconvénient est que vous êtes coincé avec l'interface. Si une optimisation pouvait être fournie à un service spécifique en modifiant l'interface, vous n'avez pas de chance car REST l'interdit. Du côté positif, cependant, REST est optimisé pour le Web, d'où l'incroyable popularité de REST sur HTTP!
Les concepts ci-dessus représentent les caractéristiques de définition de REST et différencient l'architecture REST des autres architectures telles que les services Web. Il est utile de noter qu'un service REST est un service Web, mais qu'un service Web n'est pas nécessairement un service REST.
Voir ce blog post sur Principals REST conception pour plus de détails sur REST et les principes ci - dessus.