Aujourd'hui, les applications web et mobiles sont omniprésentes dans notre quotidien. Les entreprises sont constamment à la recherche de moyens pour améliorer l'expérience utilisateur et la performance de leurs applications. C'est là que les API REST (API pour Application Programming Interface et REST pour REpresentational State Transfer) entrent en jeu.
Les API REST sont des interfaces de programmation qui permettent la communication entre les différentes applications, systèmes et services web. Elles sont devenues un élément essentiel du développement d’applications modernes et sont utilisées dans de nombreux domaines.
Sans y prêter attention, vous interagissez tous les jours avec elles : en effet, que vous commandiez un repas en ligne, que vous exploriez le contenu de votre plateforme de streaming préférée ou que vous partagiez une photo sur un réseau social, vous interagissez avec une API REST.
Dans cet article, nous allons examiner en détail ce que sont les API REST et comment elles fonctionnent.
Principes de fonctionnement des API Rest
Roy Fielding a été le premier à définir les principes de l’architecture REST en 2000. Elle repose sur les grands piliers suivants :
Principe | Description |
---|---|
Client-serveur | Architecture client-serveur, où le client envoie une requête au serveur et attend sa réponse. Le serveur traite la requête et envoie la réponse au client. |
Absence d’état | Les API ne stockent pas l’état de la session côté serveur. Ainsi, chaque requête est traitée de manière indépendante. |
Mise en cache | Les réponses peuvent être mises en cache, éliminant certaines interactions client-serveur, améliorant l’extensibilité et la performance du système. |
Couche de transport sécurisée | Le protocole sécurisé HTTPS peut être utilisé pour garantir la sécurité des données transférées entre le client et le serveur |
Code à la demande | Les serveurs peuvent temporairement étendre ou modifier les fonctionnalités d’un client en lui transférant du code exécutable |
Interface uniforme | Pour obtenir une uniformité de l’application, les contraintes d’interface suivantes sont utilisées :
|
CRUD, c’est quoi ?
Le principe CRUD est une méthode qui vise à décrire les opérations de base qu’il est possible d’effectuer sur les données provenant d’une base de données ou d’une API.
Le terme CRUD est l’acronyme pour Create, Read, Update & Delete. Voyons maintenant ce que chacun de ces termes désigne :
- Create, pour « création », consiste à ajouter de nouvelles données à la source de données. Par exemple, pour une application de gestion de contact, la création permettra d’ajouter un nouveau contact avec ses informations (nom, email, téléphone, etc)
- Read, pour « lecture », permet de récupérer les données existantes à partir de la source de données. Toujours dans notre application de gestion de contacts, la lecture permettra à l’utilisateur de consulter les détails des contacts enregistrés
- Update, pour « mise à jour », permet de modifier les données existantes. En conservant le même exemple, l’utilisateur peut modifier le numéro de téléphone d’un contact existant
- Delete, pour « suppression », permet de supprimer des données existantes. L’utilisateur peut ainsi supprimer un contact de sa liste de contacts
Anatomie d’une requête
Une requête est composée des éléments suivants :
La méthode peut se définir comme un verbe qui stipule ce que vous attendez de votre requête, conformément aux principes CRUD vu précédemment. Les méthodes les plus courantes sont :
- GET : Le serveur répond à votre requête en vous affichant les données souhaitées. Il s’agit de l’opération Read
- POST : Le serveur crée une nouvelle entrée dans la base de données, et vous notifie du résultat. Cette méthode exécute une opération Create
- PUT / PATCH : Ces deux méthodes mettent à jour une entrée dans la base de données et vous indiquent le résultat. Elles effectuent une opération Update
- DELETE : Elle supprime une entrée dans la base de données, et vous indique le résultat. Cette méthode exécute une opération Delete
Il en existe d’autres, mais beaucoup plus rarement utilisées : HEAD, CONNECT, OPTIONS et TRACE
L’URL de base, ou l’adresse de requête, est l’adresse que vous souhaitez utiliser pour accéder à l’API
Le point de terminaison (endpoint), indique où se situent les données avec lesquelles vous souhaitez interagir
Les requêtes sont un ensemble d’indications désignant ce que vous souhaitez obtenir, sous la forme de clé-valeur, liées par &, et précédées par ?
Nous venons de voir ce qui compose une requête. Il reste deux éléments importants :
Les en-têtes (headers) qui sont utilisés pour donner des informations supplémentaires au client et au serveur. Il y a beaucoup de paramètres d’en-tête, dont la liste complète est disponible sur le site web Mozilla. Ils sont toujours sous la forme clé-valeur.
Le corps de la requête (body) est le résultat qui vous a été renvoyé du serveur. Ce résultat comprend également un code retour vous informant de la réussite ou de l’échec de la requête. Les codes 2XX indiquent un succès, les codes 4XX et 5XX vous indiquent une erreur (par exemple 400 pour demande incorrecte, 404 pour une ressource non trouvée, 501 pour une erreur d’authentification, etc). Enfin, les codes 3XX indiquent une redirection d’URL.
Authentification
Un service web REST doit pouvoir authentifier les requêtes avant d’être en mesure d’envoyer une réponse. Cette authentification permet de vérifier l’identité de la personne effectuant la requête.
Les méthodes d’authentifications les plus courantes sont les suivantes :
- Authentification basique HTTP : Le client envoie le nom d’utilisateur et le mot de passe dans l’en-tête de la requête, qui sont ensuite ré-encodé en base64 pour transmission
- Les clés d’API : Le serveur vous attribue une clé unique, composée généralement d’une suite de caractères alphanumériques.
- OAuth : Il s’agit du niveau de sécurité le plus avancé. Le serveur demande d’abord un mot de passe, puis un jeton supplémentaire pour compléter le processus d’authentification. Le jeton peut également être vérifié à intervalles réguliers et avoir une certaine durée de vie.
Conclusion
Cet article vous a permis d’appréhender les API REST, et de comprendre leur puissance et leur portée. En effet, elles sont omniprésentes dès lors que vous utilisez des services ou applications web. Nous n’avons pas abordé ici les détails relatifs à leur développement, cependant, les différents cursus DataScientest vous permettront de lever le voile sur cet aspect.