API est l’abréviation pour Application Programming Interface et est un fragment de code qui spécifie comment les différents composants logiciels doivent interagir et communiquer de manière programmatique. Beaucoup ne savent pas que, dans la plupart des interfaces utilisateurs modernes, des dizaines de requêtes sont envoyées aux serveurs API pour les données. Le client traite ensuite les données retournées par le serveur API pour obtenir des résultats dans l’interface utilisateur.
Par exemple, si vous avez déjà recherché les meilleures offres de vols ou d’hôtels sur un site web agrégateur, une requête de « données » basée sur vos critères de recherche a été effectuée (après avoir cliqué sur le bouton « Envoyer ») auprès d’une API spécialisée dans les vols ou les réservations. Une fois les données récupérées par le site web agrégateur via l’API, les résultats de la recherche vous sont présentés.
Le site web de l’agrégateur et ses bases de données associées ne stockent pas les données apparaissant dans les résultats de recherche. Au lieu de cela, le site web envoyait une requête de données correspondant à vos critères de recherche à un service web externe (API). L’API renvoie les données demandées au site web, qui les analyse et affiche les résultats de recherche.
Qu’est-ce qu’une API REST?
Il existe de nombreux types d’API. Suffisamment pour décrire tous ici aurait besoin de nombreux articles de blog. Dans le cadre de nos objectifs, nous limiterons la portée de la discussion des IPA à des API REST.
REST signifie « representational state transfer » (transfert d’état représentatif) et constitue un style architectural particulier auquel les API considérées comme « RESTful » sont contraintes et « conformes ».
Les API REST sont un type très commun et important d’API qui utilise le protocole HTTP pour la transmission de données. Puisque ce protocole HTTP est utilisé, une API REST est considérée comme un « service web » qui traite de l’interaction entre les applications clientes et les serveurs API. En utilisant ce protocole, un client envoie une requête HTTP de données à un serveur API, puis le serveur renvoie une réponse HTTP avec des données encodées au client.
Le protocole HTTP utilisé par les API REST permet aux plateformes et aux systèmes écrits en différents langages de programmation d’interagir entre eux. Par exemple, une application client écrite en C# peut interagir avec un serveur API écrit en Java. Cette interopérabilité entre les systèmes rend les services web très populaires dans le développement de logiciels modernes, et plus particulièrement dans les API REST.
Cas d’utilisation de l’API REST
La séparation des préoccupations client et serveur de REST le rend attrayant pour de nombreux types de projets, qu’il s’agisse de développement mobile, de développement web, etc.
Voici quelques cas d’utilisation courants :
- Les applications Cloud – l’avantage de l’absence d’état de REST(discuté plus tard) est bien adapté aux applications cloud.
- Cloud Computing – REST prend en charge le cloud computing en contrôlant le décodage des URL lors des communications client-serveur.
- Microservices – Les APIs REST relient les microservices ensemble en une seule application.
Anatomie de la requête REST API
Les API définissent les règles de communication programmatique entre les applications clientes/backends et les serveurs API. L’API détermine la manière dont le client doit envoyer ses requêtes et le type d’informations qu’elle lui renvoie.
Les composants de base des requêtes REST API sont discutés ci-dessous.
Ressources
Les différents types d’informations que le client peut demander à l’API sont appelés « ressources ». Pensez à une ressource comme un type d’objet de données renvoyé par l’API.
Par exemple, la célèbre API Swagger Petstore se compose de plusieurs ressources : Animal, Magasin et Utilisateur.
Tous ces éléments sont liés au thème central de l’animalerie, mais chacun représente les différents objets de données que vous pouvez créer, manipuler ou supprimer.
Vous remarquerez en consultant la documentation de l’API que les points de terminaison sont regroupés sous leurs ressources associées. Par exemple, la ressource « animal » possède plusieurs points de terminaison associés (nous y reviendrons plus tard) vous permettant d’agir sur une ressource animale. Vous pouvez créer, mettre à jour ou supprimer des animaux.
Pour solidifier le concept de ressources : Lorsque vous créez un animal de compagnie, sachez que l’API renvoie une ressource d’animal de compagnie ou un « objet » d’animal de compagnie qui représente en quelque sorte un animal de compagnie physique ajouté au système de l’animalerie.
Points de terminaison
Si vous développez la ressource « animal » ou « magasin », vous verrez différents points de terminaison. Chaque point de terminaison a une fonction différente.
Les points de terminaison sont au cœur des requêtes API et sont généralement mis en évidence dans la documentation de l’API. Plus particulièrement, la méthode (ou l’action, comme POST) de la requête et le chemin d’accès (par exemple, /animal) du point de terminaison sont mis en évidence. Voici la liste des points de terminaison de la ressource « animal ».
Lorsque vous envoyez une requête à une API, vous envoyez une requête HTTP en utilisant le « chemin d’accès » spécifique du point de terminaison. Ce chemin d’accès est situé après l’URL de base de l’API. Par exemple, le chemin d’accès de base de l’animalerie Swagger est https://petstore.swagger.io/v2/, tandis que le chemin d’accès d’un point de terminaison d’animalerie est /pet. L’URL complète de la ressource utilisée pour envoyer une requête est https://petstore.swagger.io/v2/pet.
Un point de terminaison peut avoir plusieurs chemins et méthodes (Nous en parlerons plus tard) qui génèrent différentes réponses à partir d’une ressource. La requête ci-dessous utilise le point de terminaison /pet avec la méthode POST. POST indique que vous souhaitez créer quelque chose, dans ce cas, un animal de compagnie.
La requête ci-dessous utilise le même point de terminaison / l’animal de compagnie, mais cette fois, vous utilisez la méthode GET pour récupérer les informations d’un animal plutôt que d’en créer un. Notez que vous devez ajouter l’ID de l’animal à votre requête(paramètres discutés plus tard).
Méthodes
Comme il est brièvement discuté, les méthodes HTTP sont envoyées avec des requêtes API pour indiquer les actions à effectuer sur une ressource. Il y a beaucoup de méthodes API, je ne citerai donc que quelques méthodes importantes:
- Requête POST – crée une ressource.
- Demande GET – récupère des informations sur une ressource.
- Requête PUT – met à jour ou crée une ressource.
- Requête DELETE – supprime une ressource.
Les méthodes HTTP correspondent aux opérations CRUD. Par exemple, les méthodes HTTP POST, GET, PUT et DELETE correspondent aux opérations CRUD de création, de lecture, de mise à jour et de suppression.
Paramètres
Considérez les paramètres comme des options ou des filtres transmis à un point de terminaison qui affectent les informations renvoyées dans la réponse. Il existe différents types de paramètres, tels que :
- Les paramètres d’en-tête – Inclus dans l’en-tête de requête d’une requête API et sont généralement liés à l’autorisation. Par exemple, plusieurs fois un paramètre de jeton d’accès est inclus dans l’en-tête de requête qui autorise les requêtes du client à l’API.
- Les paramètres de chemin – Inclus dans l’URL de ressource d’une requête API et sont indiqués par des accolades à la fin du chemin de fin d’un point de terminaison. Par exemple GET /pet/{petId}.
- Les paramètres de chaîne de requête – Inclus dans l’URL de la ressource d’une requête API et apparaissent après un guillemet (?).
Notez que les points de terminaison peuvent ou ne peuvent pas utiliser tous ces paramètres. Cependant, les paramètres d’en-tête sont généralement inclus pour autoriser les requêtes.
Corps de la requête
Les corps de requêtes sont essentiellement des objets JSON passés dans le corps d’une requête API et sont souvent utilisés avec des méthodes POST ou PUT. Même s’ils ne sont pas classés comme tels, ils sont comme des paramètres qui prennent la forme d’un objet JSON plutôt que d’une paire clé-valeur comme un paramètre normal.
Principes fondamentaux de REST
Les principes fondamentaux de REST sont ce qui la rend si attrayante dans le développement de logiciels.
Client et Serveur
Les API REST ont une architecture conçue pour séparer le client du serveur afin que les deux puissent évoluer de manière indépendante. Le client n’est pas concerné par le stockage des données du serveur et le serveur n’est pas concerné par l’interface utilisateur. Cette séparation des préoccupations rend les interfaces utilisateurs très portables et les éléments serveur plus évolutifs.
Absence d’état
La restriction de l’état du REST garantit que les données d’état ne sont stockées que dans l’application client et pas sur le serveur. Chaque demande faite par le client est indépendante des précédentes et inclut toutes les informations requises. Le serveur ne stockant aucune information relative à la session, l’application cliente gère ses propres données de session.
Mise en cache
Lorsqu’un client envoie une requête à une API REST, l’API doit indiquer que la réponse peut ou ne peut pas être mise en cache. De plus, elle doit également indiquer la durée pendant laquelle le client peut mettre en cache les réponses. La mise en cache peut améliorer la disponibilité et les performances en réduisant le nombre de requêtes API, puisque le client peut utiliser les données mises en cache pendant une certaine période.
Interface Uniforme
Les APIs RESTful sont contraints par des moyens qui font une interface uniforme pour les clients. Par exemple, les APIs RESTful doivent:
- Identifiez leurs ressources.
- Utilisez le protocole HTTP pour décrire leurs opérations (c’est-à-dire POST, GET, PUT, DEL).
- Utilisez des messages auto-descriptifs qui permettent une interprétation par le client sans connaissances spécifiques à l’application.
- Exigez des applications clientes qu’elles utilisent des hyperliens pour interagir avec les ressources de l’API.
Système en couches
REST permet une architecture de système en couches où chaque couche joue un certain rôle dans le système et n’interagit qu’avec les autres couches désignées. Par exemple, vous pouvez avoir un serveur API, un serveur de stockage de données et un serveur pour authentifier les requêtes des clients en utilisant une architecture superposée.
Des serveurs intermédiaires, assurant la sécurité, des équilibreurs de charge et des proxys, peuvent également être utilisés entre le client et le serveur, afin d’améliorer la disponibilité du système.
Avantages du REST
Évolutivité
La séparation du client des composants du serveur augmente la portabilité et la simplification des composants du serveur. L’architecture multi-couches de REST limite également l’interaction entre des couches. Ces facteurs contribuent à l’évolutivité de REST.
Portabilité / Indépendance
Comme l’interface utilisateur est séparée du serveur, elle peut être portée sur de nombreuses plateformes. Les API REST sont elles-mêmes adaptables sur différentes plateformes, ce qui facilite les tests pendant le développement.
Flexibilité
La séparation client-serveur facilite également la migration des données entre les serveurs et le déploiement rapide des nouvelles modifications.
Utilise moins de la bande passante
Les API RESTful sont plus avantageuses que les API SOAP en termes de bande passante. Les API REST envoient et reçoivent couramment des charges utiles JSON, contrairement à SOAP qui utilise XML. Les charges utiles XML sont plus volumineuses que JSON, ce qui fait que les API SOAP nécessitent plus de bande passante que les API REST.
Intégration facile
Les API REST sont généralement plus faciles à intégrer dans leurs applications car elles peuvent se concentrer davantage sur l’interface utilisateur, et les règles métiers plutôt que les composants du serveur et la gestion des données gérés par le serveur API.
Défis REST
Alors que les avantages de l’utilisation de REST pour de nombreuses personnes l’emportent sur les inconvénients, les équipes de développement doivent toujours être conscientes des enjeux potentiels de ce style architectural.
Fiabilité du point de terminaison
Bien qu’il soit préférable que les URL de terminaison de l’API soient cohérentes à mesure qu’une API évolue, L’uniformité des URL peut devenir un problème pour les systèmes plus grands, car le nombre de chemins et méthodes possibles augmente.
Contrôle de version de l’API
À mesure que de nouvelles versions d’API sont publiées, le contrôle des versions devient inévitablement un défi que les équipes de développement peinent à gérer. Pour garantir la compatibilité, les terminaux hérités doivent être pris en charge afin de rester valides jusqu’à leur suppression. Cela représente un coût en temps et en ressources.
Augmentation du temps de réponse
Un exemple de deux facteurs qui peuvent causer de la lenteur dans le temps de réponse est la taille d’un serveur et le nombre de serveurs impliqués dans le traitement d’un appel API et la récupération des données. Avec de plus grandes bases de données viennent plus de données qui doivent être triées et traitées, surtout s’il y a de nombreuses bases de données.
Réponses de données volumineuses
Parfois, il est inévitable que la réponse d’un serveur à une requête API fournisse inutilement toutes les données possibles quand seul un sous-ensemble est nécessaire. L’application client doit être suffisamment robuste pour analyser les informations et extraire les données nécessaires. Une requête GET est une occurrence courante qui peut déclencher la récupération de beaucoup de données.
Sécurité
Bien que l’architecture à couches de REST ait des avantages en matière de sécurité, cela ne signifie pas que les applications ne doivent pas être chiffrées. Sans chiffrement, les applications peuvent exposer des données sensibles.
Les meilleurs exemples d’API REST
Plaid
Le marché des produits SaaS (Software as a Service) stimule une croissance importante des API REST dans le secteur FinTech. L’une des entreprises les plus importantes est Plaid, qui fait partie d’un certain nombre d’entreprises promouvant la « démocratisation des données » dans les services financiers.
La « démocratisation » consiste à rendre les données accessibles à toutes les parties (développeurs, acteurs commerciaux, consommateurs), quelles que soient leurs compétences techniques. Ce modèle permet d’exploiter le potentiel brut des données pour créer des expériences adaptées aux besoins de l’utilisateur final.
Plaid adopte une approche fortement axée sur l’utilisation de ses services pour la mise en marché du potentiel de ses services. La communication claire et les conseils de Plaid pour tirer parti de ses services sont un différentiateur.
Par exemple, il existe toute une série de cas d’utilisation pour expliquer pourquoi quelqu’un utiliserait les services de Plaid que ce soit pour les demandes de financement personnel, les paiements de consommation, les prêts, les services bancaires ou la gestion de patrimoine. Chaque cas d’utilisation est expliqué en détail dans sa documentation. Plaid a également des connexions avec des milliers d’institutions financières que les développeurs peuvent utiliser dans leurs applications.
Pour ce qui est des médias sociaux, la portée de Twitter est énorme, avec une moyenne de 206 millions d’utilisateurs actifs. Les développeurs doivent connaître les avantages de l’API Twitter pour intégrer les fonctionnalités de Twitter tout en promouvant leurs applications sur la plateforme.
Par exemple, les développeurs peuvent tirer parti du processus d’identification de Twitter pour réduire ou éliminer le processus d’inscription. L’API vous permet d’afficher des tweets à vos utilisateurs en fonction de certains critères tels que l’emplacement ou les hashtags populaires. La portée de Twitter vous permet également de commercialiser efficacement votre application en utilisant leurs données.
Si d’autres API d’éditeurs de réseaux sociaux réputés sont disponibles, ce sont les capacités et la portée de l’API Twitter qui la distinguent.
Services AWS AI
Les API REST pour les applications d’intelligence artificielle, de science des données et d’apprentissage automatique connaissent une croissance constante. Parmi les entreprises de premier plan proposant ces services, on trouve AWS AI Services (Amazon), qui permet aux développeurs d’intégrer des fonctionnalités d’IA à leurs applications pour une interaction plus adaptative et intelligente. L’IA peut également contribuer à sécuriser les échanges de données entre les systèmes en détectant les vulnérabilités potentielles.
Bien qu’il existe de nombreuses API d’IA, les services d’Amazon offrent la plus large gamme de fonctionnalités de leur catégorie et présentent l’avantage supplémentaire d’une intégration facile.
Résumé
Les API sont devenues la colle qui relie des systèmes séparés, leur permettant d’échanger des données en utilisant un modèle architectural commun (notamment REST) qui augmente l’évolutivité, la flexibilité et l’indépendance des clients et des serveurs évoluent indépendamment les uns des autres.
Tant les nouvelles startups que les entreprises technologiques établies élargissent leurs offres existantes et développent de nouveaux produits SaaS à mesure que la « démocratisation des données » devient importante pour les entreprises qui veulent rester à la pointe de la technologie.
La conversation sur la valeur des API n’est plus exclusivement dans le domaine des « codeurs ». Les parties prenantes de tous les secteurs d’activité profitent de la compréhension des API et de la manière dont elles peuvent être utilisées pour résoudre les défis de l’entreprise.
Planifiez une démonstration avec l’un de nos experts pour approfondir vos connaissances sur Document360
Réservez une démo