REST ? Une explication simple
18 January 2020
Dans cet article, nous étudierons les API “REST”, qui sont propres et polyvalentes pour beaucoup de types d’échange d’information entre logiciels.
REST
Le terme REST (Representational State Transfer) représente une architecture logicielle qui définit ensemble deux contraintes pour la création de services web :
- Client — le client est la personne ou le logiciel qui utilise l’API. Il peut s’agir d’un développeur, par exemple toi, en tant que développeur, tu peux utiliser l’API Twitter pour lire et écrire des données depuis Twitter, créer un nouveau tweet et faire plus d’actions dans un programme que tu écris. Ton programme appellera l’API de Twitter. Le client peut également être un navigateur Web. Lorsque tu vas aller sur le site Twitter, ton navigateur est le client qui appelle l’API Twitter et utilise les données retournées pour afficher les informations à l’écran.
- Ressource — une ressource peut être n’importe quel objet sur lequel l’API peut fournir des informations. Dans l’API d’Instagram, par exemple, une ressource peut être un utilisateur, une photo, un hashtag. Chaque ressource a un identificateur unique. L’identificateur peut être un nom ou un numéro.
Lorsqu’un service web, une API en l'occurrence dans notre cas, est conforme à ses deux contraintes, on dit que c’est une API RESTful.
Dans un service REST, les requêtes effectuées sur l'URI d’une ressource, produisent une réponse dont le corp est formaté en HTML, XML, JSON ou autres…
S’il fallait essayer d’énumérer les points positifs lors de l’utilisation d’un service REST, je dirais : la réactivité, la fiabilité, l’extensibilité par la réutilisation de composants pouvant être gérés et mis à jour sans affecter le système global et ce même pendant son fonctionnement.
REST en résumé
- Representational State Transfer;
- Style d'acrchitecture pour la conception d'application en réseau;
- S'appuie sur un protocole client-serveur sans état, presque toujours HTTP => il existe d'autre protocole, mais HTTP est le plus utilisée;
- Traite les objets serveur comme ressources, qui peuvent être créées ou détruites => requête POST, requête DELETE etc...
- Peut être utilisé par pratiquement tous les langages de programmation.
L'API est le messager et REST utilise le protocole HTTP pour formater ses messages
REST est un réseau de ressources au sein duquel l’utilisateur évolue en sélectionnant des identifiants de ressources, par exemple http://www.exemple.com/article/21 et des opérations sur les ressources telles que GET et POST (= transition d’étapes de l’application) transférant une représentation de la ressource suivante (= le nouvel état de l’application) vers l’utilisateur pour être utilisée.
Le protocole HTTP
Les API REST sont basées sur HTTP, qui signifie Hypertext Transfer Protocol. C’est ce qui est au cœur du web ! C’est un protocole qui définit la communication entre les différentes parties du web. L’échange est basé sur des requêtes client et serveur. Un client lance une requête HTTP, et le serveur renvoie une réponse. Tim Berners-Lee, un scientifique et ingénieur en technologie au Centre Européen de Recherche Nucléaire, a inventé HTTP pendant le développement de la première version du World Wide Web. Ce sont des méthodes qui définissent les requêtes que le client peut effectuer, dont GET, PUT, POST, DELETE et encore plus. Nous verrons tout cela dans une prochaine partie de ce cours.
HTTP méthodes
- GET : récupérer des données à partir d’une ressource spécifiée
- POST : soumettre une donnée à traiter à une ressource spécifiée
- PUT : mettre à jour une ressource spécifiée
- DELETE : supprimer une ressource spécifiée
- HEAD : idem que GET mais ne retourne pas le body
- OPTIONS : retourne les méthodes HTTP supportées
- PATCH : mettre à jour les ressources partielles
C’est juste une introduction à ce que représente le terme REST. J’espère qu’il te permettra d’y voir un peu plus clair, en attendant un tuto sur comment construire une API REST. Je te mets le lien d’un outil fort sympathique pour tester tout un tas de requêtes sur les différentes API présente sur le web ou sur tes futures créations. J’ai prévu de faire un article sur cet outils alors je te laisse découvrir de ton coté en attendant.