Qu'est-ce qu'une API REST ? Quels sont ses avantages et comment l'utiliser ? Cet article répond aux questions que vous pourriez vous poser sur l'API REST.
Qu’est-ce qu’une API REST ?
API REST, API RESTful ou encore API Web RESTful : ces appellations désignent des APIs qui adhèrent à un standard particulier, celui de l'architecture REST. Avant d'aller plus loin, rappelons qu'une API, ou interface de programmation d'application, est un logiciel qui permet à deux applications de communiquer entre elles. En informatique, les APIs sont indispensables pour permettre à diverses applications de fonctionner ensemble.
Pour créer une API, les développeurs suivent des méthodes et des principes strictement définis, afin que l'ensemble puisse fonctionner. Avant les années 2000, les développeurs utilisaient SOAP (Simple Object Access Protocol), un protocole bâti sur XML, complexe à coordonner et gourmand en ressources. Si SOAP est encore utilisé de nos jours, il a été en grande partie remplacé par l'API REST.
Conçu en 2000 par l'informaticien américain Roy Fielding au cours de sa thèse de doctorat, REST (REpresentational State Transfer) est devenu le modèle dominant de création des APIs, et un jalon incontournable dans le développement du World Wide Web. Aujourd'hui, la grande majorité des APIs sont basées sur REST, particulièrement pour offrir des services Web, interactifs ou mobiles. Découvrons le fonctionnement des API RESTful, leurs avantages, et leurs applications très variées.
Comment fonctionne une API REST ?
Dans la pratique, l'API REST fonctionne sur le principe de l'environnement client-serveur. L'API RESTful récupère et transmet d'un côté les requêtes d'un utilisateur ou d'une application, et de l'autre les informations rendues par le serveur (application ou base de données).
Quelques notions clés permettent de saisir le fonctionnement d'une API RESTful. Le client est l'entité effectuant une demande. C'est le cas par exemple d'un utilisateur effectuant une recherche au sein d'un catalogue de produits sur son navigateur. L'API se charge de communiquer au serveur la requête, et de renvoyer vers le client les informations demandées. Les informations qui transitent par l'API sont les ressources. Le serveur traite les requêtes. Dans le cas présent, il renverra la liste des produits correspondant aux critères de recherche.
Les requêtes du client sont formulées à travers le protocole HTTP (HyperText Transfer Protocol). Voici les principales méthodes et tâches qu'il permet d'accomplir :
-
GET : récupérer des données envoyées par le serveur.
-
POST : envoyer et publier des informations vers le serveur (les données d'un formulaire d'inscription par exemple).
-
PUT : mettre à jour les informations du serveur.
-
PATCH : modifier partiellement une ressource existante.
-
DELETE : supprimer des informations du serveur.
Les formats de données pour utiliser une API REST sont divers. Le format JSON (JavaScript Object Notation) est un format léger, facile à comprendre, et utilisable par de nombreux langages de programmation. XML (Extensible Markup Language) permet de gérer des structures de données complexes, et est compatible avec d'autres standards comme le RSS. YAML et HTML sont d'autres formats souvent utilisés pour communiquer les ressources.
Quels sont les principes de l'API REST ?
Une API REST suit les principes de REST en termes d'architecture logicielle. Ces principes créent une ligne directrice permettant de créer des APIs flexibles et légères, parfaitement adaptées à la transmission de données sur internet.
Voici les six principes architecturaux qui régissent une interface REST :
-
Découplage client-serveur. Le client connaît seulement l'URI (Uniform Resource Identifier) de la ressource à récupérer. Le serveur interagit uniquement en transmettant ses données via HTTP.
-
Interface uniforme. L'architecture REST uniformise la façon dont les informations sont identifiées, gérées et transmises, et fait appel aux hyperliens pour apporter des ressources supplémentaires au client.
-
Code à la demande. Le serveur peut transmettre du code au client pour étendre ses fonctionnalités, par exemple pour aider à repérer les erreurs d'un formulaire.
-
Système en couches. Une API RESTful peut s'exécuter sur plusieurs serveurs organisés de façon hiérarchique, pour fournir un service plus stable et performant au client.
-
Mise en cache. Le serveur REST peut mettre en cache des données pour mieux servir le client, en stockant par exemple les images d'un site pour les resservir ensuite.
-
Absence d'état (Stateless). Chaque requête du client est isolée et traitée indépendamment par le serveur. Ainsi, chaque appel doit contenir tous les éléments nécessaires à son traitement.
Quels sont les avantages d’une l’API REST ?
En respectant les exigences du framework de l'API REST, les développeurs profitent des nombreux avantages des API RESTful pour développer des applications efficaces et puissantes :
-
Polyvalence : il n'y a aucune restriction sur le langage de programmation à utiliser, et un grand choix pour le format de données (XML, PYTHON, JSON, HTML, etc.)
-
Légèreté : les formats de données légers d'une API REST la rendent idéale pour des applications mobiles ou l'Internet des objets (IoT).
-
Portabilité : la séparation client-serveur facilite l'échange de données entre les plateformes.
-
Flexibilité : cette API n'a pas les lourdeurs d'un protocole, c'est un style architectural.
-
Indépendance : les développeurs peuvent travailler séparément sur la partie client ou serveur.
Les avantages de l'API REST se traduisent en gain de productivité et en évolutivité pour les équipes de développement. La mise à l'échelle des systèmes utilisant API REST est facilitée. Les fonctionnalités sont donc plus à même de soutenir une grande charge d'utilisateurs et d'opérations.
Des contraintes de sécurité
La création et la gestion d'une API Web RESTful ne sont pas exemptes de défis. L'authentification des utilisateurs peut devenir complexe lorsqu'elle fait appel à plusieurs méthodes différentes, par HTTP, clés API, ou OAuth (Open Authorization). Sur des applications larges et complexes, la multiplication des points de terminaison (endpoints) entre le serveur et le client peut nuire à la cohérence d'ensemble, de même que les mises à jour si elles laissent d'anciens points de contact encore actifs.
D'autre part, l'interface REST a une faiblesse, car elle transmet par l'URL des points de terminaison des données potentiellement sensibles, comme les identifiants. Sa sécurisation nécessite des mesures spécifiques comme un chiffrement TLS (Transport Layer Security), un modèle d'authentification des utilisateurs robuste, et un système de prise en charge des requêtes abusives et de limitation des débits.
Utilisations d'une API REST
Les développeurs utilisent des API à l'architecture REST pour créer et maintenir de nombreux services. Ainsi, la plupart des applications web et mobiles utilisent des API REST pour accéder et partager des ressources et des informations. Dans le Cloud, cette API permet de connecter rapidement les services des architectures distribuées et hybrides. Au sein des grandes entreprises, elle facilite l'interopérabilité entre les composants des systèmes d'information.
Voici des exemples d'application d'une API REST au sein de sociétés reconnues :
-
Google Search. Cette API fournit en temps réel des millions de résultats de recherche sur Google Web et Google Image.
-
Deezer. L'API REST de la plateforme de streaming musical permet de retrouver un album ou un artiste dans la base de données de millions de chansons.
Actualiser les prix d'un site e-commerce, automatiser des publications, orchestrer des clusters Kubernetes, etc. Le champ d'utilisation des APIs RESTful n'a de limites que celle de l'imagination des développeurs et des créateurs d'applications digitales.
L'API REST de GitLab
GitLab propose une suite complète d'outils et d'APIs pour l'intégration et l'automatisation d'applications externes. Elle comprend GraphQL, les webhooks, des extensions IDE, et naturellement, une API REST. L'authentification de l'API REST GitLab peut se faire de nombreuses manières, par jeton d'accès, OAuth, ou cookies de session par exemple. Les points de terminaisons sont disponibles pour les templates Dockerfile, .gitignore, GitLab CI/CD YAML et Open source. Pour profiter pleinement de toutes les possibilités de développement de vos applications agiles et cloud-natives, consultez la documentation complète de l'API REST de GitLab.
FAQ sur l'API REST
REST vs SOAP
REST et SOAP sont deux standards d'API. L'API REST (REpresentational State Transfer) reprend les principes architecturaux de REST, qui permettent de faire communiquer un serveur et un client de façon légère et évolutive. L'API REST est le type d'API le plus répandu. Le protocole SOAP (Simple Object Access Protocol) est plus ancien, plus rigide et disponible uniquement en format XML. Ce standard historique peut être encore utilisé pour des applications qui requirent un haut niveau de sécurité.
Quelle est la différence entre REST et API REST ?
REST est un style d'architecture logicielle destiné à faciliter la création de services web et l'échange de données sur internet, en assurant l'interopérabilité entre les ordinateurs et serveurs. L'API Web RESTful est un type d'API qui se base sur les grands principes de REST.
Quels sont les principes d'une API REST ?
Une API REST respecte les six grands principes de l'architecture REST. Ces principes sont l'interface uniforme, le code à la demande, le système en couches, la mise en cache, l'absence d'état et le découplage client-serveur. Ce dernier principe constitue la base de la structure d'une API RESTful ; il est essentiel au succès de cette API dans le monde des applications Web.