API REST

Le World Wide Web est un réseau de machines hétérogènes, qui fonctionnent avec des systèmes hétérogènes, qui exécutent des applications écrites avec des langages tout aussi hétérogènes. L’ensemble doit être capable de communiquer et d’offrir des services tels que ceux que nous connaissons (moteurs de recherche, plateformes multimédia). Mais quelle est la place de l’API REST ?

Les règles de la communication

Une API, Application Program Interface, est, comme son nom l’indique, un système de règles entre applications, qui leur permet de communiquer entre elles.

Dans le cadre client-serveur, lorsque vous, le client, faites appel à un service, sur un serveur, vous envoyez votre demande de manière à ce que le pourvoyeur de services comprenne la demande. La réponse doit, elle aussi, être formée de façon à ce que vous puissiez la comprendre.

Par exemple, lors d’une recherche sur le web, vous faites une requête à moteur dédié. Selon les critères de cette dernière (intitulé, type de ressource (texte, image)), le moteur renvoie une réponse. Celle-ci est interprétée par votre navigateur pour afficher le résultat sous la forme attendue. C’est le rôle d’une API.

fonctionnement API REST

L’API REST

L’API REST, REpresentational State Transfer, parfois appelée RESTful, est une API qui permet la communication entre deux applications web de manière légère et efficace.

En bref

Elle a été définie par Roy Fielding, un contributeur important du protocol HTTP, dans sa thèse de doctorat sur les styles d’architecture logiciels. L’API REST est basée sur le protocol HTTP. Elle fait particulièrement usage des méthodes GET, POST et PUT.

Le format d’échange entre le client et le serveur n’est pas défini, cela peut tout aussi bien être du JSON, du XML, que du texte brut. C’est une API parfaite pour un système de gestion de contenu « headless » comme Strapi.

Les contraintes REST

L’API REST ne décrit aucune implémentation, mais simplement un ensemble de règles. Une application est considérée RESTful si elle respecte 6 contraintes établies par Roy Fielding :

  • la communication s’opère entre deux applications aux rôles différents : un client et un serveur,
  • les requêtes envoyées par le client sont indépendantes les unes des autres. Chacune d’entre elles contient toutes les informations nécessaires au traitement de la demande par le serveur,
  • les réponses doivent explicitement permettre ou non leur mise en cache. Cela évite l’utilisation de donnés obsolètes, et permet d’optimiser la communication dans les cas de donnés “cacheables”,
  • l’interface de communication doit être uniforme, c’est à dire respecter un certain nombre de règles :
    • des ressources identifiables (URI),
    • des ressources manipulables par le serveur,
    • des messages auto-descriptifs, le contenu est suffisant pour que le serveur puisse répondre à la demande,
    • HATEOAS.
  • les requêtes doivent pouvoir être encapsulées. Un serveur peut ainsi faire appel à un autre serveur pour répondre à une demande de façon totalement transparente,
  • le serveur doit pouvoir envoyer du code exécutable, comme des scripts javaScripts ou des applets JAVA, au client pour lui ajouter des fonctionnalités temporaires.
A lire aussi :   La nouvelle application Tutuapp pour iOs et Android est de retour

Dans les faits, rares sont les implémentations qui respectent les 6 règles. Afin de définir un niveau de conformité, il est possible de se référer au modèle de maturité de Richardson. Composé de 4 niveaux, de 0 à 3, basé sur 4 critères :

  • identification des ressources (URI),
  • niveau d’implémentation d’HTTP (GET, POST…),
  • codes de retour HTTP,
  • HATEOAS.

Une interface robute, légère et efficace

L’API REST est un ensemble de règles qui permet l’interopérabilité entre un client et un serveur. Elle s’appuie sur le protocol robuste HTTP, en échangeant des donnés, dans la majorité des cas, sous le format JSON, qui est à la fois efficace et facilement lisible par l’homme. Un intérêt évident est le découplage client-serveur.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here