Qu’est-ce qu’une API REST ?
L’API REST (Representational State Transfer Application Program Interface) est un style architectural permettant à différents logiciels de communiquer entre eux, que ce soit sur un réseau ou sur un même appareil. Les développeurs utilisent souvent des API REST pour créer des services web, connus sous le nom de services web RESTful. Le protocole HTTP est utilisé pour récupérer et publier des données entre un client et un serveur.
L’avantage des REST API est qu’elles permettent à des logiciels provenant d’appareils différents, voire utilisant des systèmes d’exploitation ou des architectures différentes, de communiquer entre eux. Le client peut demander des ressources dans un langage compris par le serveur, qui renvoie la ressource dans un langage accepté par le client. Les formats de réponse couramment utilisés sont JSON (JavaScript Object Notation), XML (Extensible Markup Language) ou le texte brut, mais plusieurs autres formats sont également pris en charge par de nombreuses API.
Qu’entendons-nous par style architectural REST ?
Le style architectural REST est un ensemble de principes directeurs que les développeurs doivent suivre pour considérer leur API comme “RESTful”. Ces principes guident le développeur dans la mise en œuvre de l’API. Les principes de base sont :
Architecture client-serveur
Les clients utilisent des appels HTTP pour demander une ressource (méthode GET) ou envoyer des données au serveur (méthode POST), parmi d’autres méthodes HTTP prises en charge par l’API. Les méthodes les plus fréquemment utilisées sont GET et POST, mais d’autres méthodes comme HEAD, PUT, PATCH, DELETE, CONNECT, OPTIONS et TRACE peuvent également être utilisées. La documentation de l’API précise les méthodes disponibles. Pour plus d’informations, consultez le site w3schools.com.
Sans état
Une API REST est sans état, ce qui signifie qu’elle ne maintient pas de connexion ou de données entre les requêtes d’un même client. Le client envoie une requête, l’API exécute l’action correspondante et renvoie une réponse. Une fois la réponse envoyée, l’API se déconnecte et ne conserve aucune information sur le client en mémoire. Chaque requête est traitée comme une première demande.
Avec mise en cache
Une API REST doit prendre en charge la mise en cache des données fréquemment demandées. Cette fonctionnalité permet de réduire la bande passante, la latence et la charge du serveur. L’API doit être capable d’identifier les ressources pouvant être mises en cache, de déterminer qui peut les mettre en cache et de décider de leur durée de validité dans le cache.
Interface uniforme
Le client interagit avec le serveur selon une interface uniforme, indépendamment de l’appareil ou de l’application utilisée.
Identification des ressources
Chaque ressource de l’API doit avoir un URI (Uniform Resource Identifier) spécifique, tel que “/monitor/{monitorGuid}” dans le cas de l’API Uptrends version 4.
Auto-descriptif
L’API contient des métadonnées telles que le Content-Type, qui décrit la manière d’interpréter la réponse. Les types MIME peuvent être utilisés pour décrire ces métadonnées.
HATEOAS (Hypermédia as the Engine of Application State)
La réponse de l’API doit inclure des URI de méthodes supplémentaires auxquelles le client peut accéder en fonction des données reçues. Le HATEOAS permet de naviguer à travers l’API de manière dynamique. Il favorise ainsi la découverte et l’exploration des fonctionnalités de l’API.
Système en couches
Une API peut être composée de plusieurs couches, comme des serveurs proxy ou des dispositifs de répartition de charge. Le serveur final peut déployer des serveurs supplémentaires pour traiter la requête. Le client n’a pas besoin de connaître les détails de l’infrastructure sous-jacente, ce qui rend l’API plus évolutive.
Code sur demande (facultatif)
L’API peut envoyer du code exécutable, tel que des applets Java ou JavaScript, en réponse à une requête.
Qu’est-ce qu’une ressource web ?
Une ressource web est tout ce avec quoi un client peut interagir sur le web. Il peut s’agir d’un fichier, tel qu’un document Word, une image, du HTML ou une vidéo. Mais une ressource peut également être plus abstraite, comme un service tel que Google Maps ou des services financiers.
Le développeur de l’API décide des formats de réponse pris en charge par le serveur. Par exemple, le serveur peut répondre en JSON, XML ou texte brut. L’API doit être capable de formater la réponse en fonction des besoins du client.
Exemples d’API REST
Les API sont utilisées pour de nombreuses tâches sur Internet, telles que la validation d’adresses, le traitement des cartes de crédit, la réservation de rendez-vous, etc.
Voici quelques exemples d’API REST :
- L’API du United States Postal System permet aux entreprises de gérer leurs besoins postaux, tels que la validation des adresses, la récupération des codes postaux, le calcul des frais d’expédition, etc.
- Les grands magasins Macy fournissent une API permettant aux partenaires d’accéder à leur inventaire, d’interagir avec les registres de cadeaux, de vérifier les événements en magasin, etc.
- L’API des théâtres AMC permet aux développeurs d’accéder à leur système de réservation, d’acheter des billets et de commander des services.
- L’API Graph de Facebook permet aux applications d’interagir avec Facebook, par exemple pour publier des messages, gérer des annonces ou collecter des données.
Il est important de noter que les API peuvent également utiliser d’autres API. Par exemple, l’API des théâtres AMC peut utiliser une autre API pour traiter les paiements par carte de crédit.
Maintenir la disponibilité et la rapidité des API
Les utilisateurs dépendent des API pour le bon fonctionnement de leurs sites web, de leurs applications et de leurs appareils. Une API non disponible ou lente peut entraîner des pannes et des frustrations pour les utilisateurs. Les fournisseurs d’API ainsi que les consommateurs doivent surveiller en permanence les API et agir rapidement en cas de panne ou de baisse des performances.
Surveillance de la disponibilité de l’API
Même une coupure de courte durée peut entraîner des pannes de sites web, d’applications et d’appareils. Il est essentiel que les éditeurs d’une API assurent la redondance de leur système pour éviter les temps d’arrêt. Cependant, des pannes peuvent survenir. Les éditeurs d’API ont donc la responsabilité de garantir une disponibilité ininterrompue à leurs utilisateurs. Les utilisateurs, quant à eux, ont intérêt à protéger leur activité en surveillant les API essentielles à leur service. La surveillance de l’API synthétique propose deux solutions : la surveillance d’API multi-étapes et la surveillance de la disponibilité du service web.
Vérification de la disponibilité et des performances de base des API
Une surveillance efficace de la disponibilité nécessite des tests fréquents. Pour maintenir une haute disponibilité, les tests doivent être effectués toutes les minutes. Un simple moniteur de service web HTTPS/HTTP permet de vérifier facilement la disponibilité.
Voici les principaux points à vérifier lors de la surveillance de l’API :
- Effectuer des tests toutes les minutes
- Effectuer des tests depuis différents emplacements à travers le monde
- Vérifier l’authentification de base
- Mesurer le temps de réponse
- Vérifier le contenu de la réponse
- Vérifier les codes de réponse spécifiques
La surveillance de la disponibilité permet de s’assurer que l’API répond bien aux requêtes et fournit des informations sur le temps de réponse. En cas d’erreur, le système d’alerte envoie une notification à l’équipe chargée de la maintenance. Les rapports générés par le moniteur fournissent les données nécessaires pour respecter les accords de niveau de service.
Cependant, la mise en place de moniteurs de service web pour chaque point de terminaison ne suffit pas toujours à garantir le bon fonctionnement d’une API. C’est là qu’intervient la surveillance API multi-étapes, qui permet de gérer des tests plus complexes.
Surveillance avancée des API
Un test approfondi d’une API nécessite la gestion de scénarios plus complexes, tels que des redirections, la validation des données ou la réutilisation de données. La surveillance API multi-étapes permet de réaliser des tests plus détaillés :
- Gestion des redirections
- Prise en charge des authentifications de base, NTLM (Windows) et Digest
- Utilisation de certificats clients
- Déclaration de variables : prédéfinies, affectation de valeurs depuis le corps de la réponse, utilisation de variables automatiques
- Réutilisation de valeurs dans des requêtes ultérieures
- Utilisation d’opérateurs de comparaison et réalisation de vérifications sur le contenu des réponses et les performances
- Capture de valeurs numériques de la réponse pour générer des rapports
La surveillance API multi-étapes permet de vérifier les fonctionnalités complètes des transactions de l’API, de fournir des données de performances pour l’ensemble de la transaction et, grâce à des vérifications supplémentaires, de mesurer la rapidité des requêtes individuelles.
En résumé, les API REST sont essentielles pour la communication entre logiciels, indépendamment des systèmes d’exploitation. Elles fonctionnent grâce à une architecture client-serveur et offrent une interface uniforme. Les API REST sont sans état et utilisent des ressources identifiables. Elles favorisent la mise en cache, sont auto-descriptives et utilisent le HATEOAS. Les systèmes multicouches facilitent l’évolutivité des API REST. Enfin, pour garantir une disponibilité et des performances optimales, il est important de surveiller en permanence les API avec des outils adéquats.
Points clés :
- L’API REST est un style architectural qui permet aux logiciels de communiquer entre eux, quels que soient les systèmes d’exploitation.
- Les API REST fonctionnent sur la base d’une relation client-serveur en fournissant une interface uniforme.
- Une API REST a une interface uniforme basée sur des ressources, est auto-descriptif et utilise HATEOAS.
- HATEOAS signifie que la réponse de l’API comprend des données qui donnent accès à d’autres méthodes disponibles.
- Les API REST sont sans état, ce qui signifie que le serveur ne maintient pas de connexions entre les appels.
- Les API REST utilisent plusieurs couches pour faciliter l’évolutivité.
- Maintenir une haute disponibilité et des réponses rapides est essentiel pour une API REST.
- La surveillance d’API vérifie la disponibilité et les performances et envoie des notifications en cas de problème.
- Les moniteurs HTTPS/HTTP du service web sont excellents pour surveiller la disponibilité.
- La surveillance API multi-étapes vérifie les fonctionnalités complètes des transactions de l’API pour la disponibilité, la fonctionnalité et les performances.