API REST

menu icon

API REST

Les API REST constituent un moyen souple et léger d'intégrer des applications et sont devenues la méthode la plus courante pour connecter des composants dans les architectures de microservices.

Qu'est-ce qu'une API REST ?

Une API, ou interface de programme d'application, est un ensemble de règles qui définissent comment les applications ou les unités peuvent se connecter et communiquer entre eux. Une API REST est une API conforme aux principes de conception du style architectural REST ou Representational State Transfer. C'est pour cette raison que les API REST sont parfois appelées API RESTful .

Défini pour la première fois en 2000 par l'informaticien Roy Fielding dans sa thèse de doctorat, REST offre un niveau relativement élevé de flexibilité et de liberté aux développeurs. Cette flexibilité n'est qu'une des raisons pour lesquelles les API REST sont devenues une méthode courante pour connecter les composants et les applications dans une architecture de microservices.

Principes de conception REST

Au niveau le plus élémentaire, une API est un mécanisme qui permet à une application ou à un service d'accéder à une ressource dans une autre application ou un autre service. L'application ou le service qui effectue l'accès est appelé le client, et l'application ou le service qui contient la ressource est appelé le serveur.

Certaines API, telles que SOAP ou XML-RPC, imposent un cadre strict aux développeurs. Mais les API REST peuvent être développées à l'aide de pratiquement n'importe quel langage de programmation et prennent en charge une variété de formats de données. La seule exigence est qu'elles respectent les six principes de conception REST suivants : également appelés contraintes architecturales :

  1. Interface uniforme. Toutes les demandes d'API pour une même ressource doivent avoir la même apparence, quelle que soit l'origine de la demande. L'API REST doit garantir que le même élément de données, tel que le nom ou l'adresse électronique d'un utilisateur, n'appartient qu'à un seul identificateur URI (Uniform Resource Identifier). Les ressources ne doivent pas être trop volumineuses, mais elles doivent contenir toutes les informations dont le client peut avoir besoin.
  2. Découplage client-serveur. Dans la conception des API REST, les applications client et serveur doivent être totalement indépendantes les unes des autres. La seule information que l'application cliente doit connaître est l'URI de la ressource demandée ; elle ne peut interagir avec l'application serveur en aucune autre manière. De même, une application serveur ne doit pas modifier l'application client autrement qu'en lui transmettant les données demandées via HTTP.
  3. Sans état. Les API REST sont sans état, ce qui signifie que chaque demande doit inclure toutes les informations nécessaires à son traitement. En d'autres termes, les API REST ne nécessitent aucune session côté serveur. Les applications serveur ne sont pas autorisées à stocker des données liées à une demande du client.
  4. Mise en cache. Dans la mesure du possible, les ressources doivent pouvoir être mises en cache du côté client ou côté serveur. Les réponses du serveur doivent également contenir des informations indiquant si la mise en cache est autorisée pour la ressource distribuée. L'objectif est d'améliorer les performances côté client, tout en augmentant l'évolutivité du serveur.
  5. Architecture système en couches. Dans les API REST, les appels et les réponses passent par différentes couches. En règle générale, ne partez pas du principe que les applications client et serveur se connectent directement l'une à l'autre. Il peut exister un certain nombre d'intermédiaires différents dans la boucle de communication. Les API REST doivent être conçues de manière à ce que ni le client ni le serveur ne puissent savoir s'ils communiquent avec l'application finale ou avec un intermédiaire.
  6. Code à la demande (facultatif). Les API REST envoient généralement des ressources statiques, mais dans certains cas, les réponses peuvent également contenir du code exécutable (par exemple, des applets Java). Dans ce cas, le code ne doit être exécuté qu'à la demande.

Fonctionnement des API REST

Les API REST communiquent via des requêtes HTTP pour exécuter des fonctions de base de données standard telles que la création, la lecture, la mise à jour et la suppression d'enregistrements (également appelées CRUD) dans une ressource. Par exemple, une API REST utilise une requête GET pour récupérer un enregistrement, une requête POST pour en créer un, une requête PUT pour mettre à jour un enregistrement et une requête DELETE pour en supprimer un. Toutes les méthodes HTTP peuvent être utilisées dans les appels d'API. Une API REST bien conçue est similaire à un site Web exécuté dans un navigateur Web avec une fonctionnalité HTTP intégrée.

L'état d'une ressource à un instant ou un horodatage donné s'appelle la représentation de la ressource. Ces informations peuvent être fournies à un client dans pratiquement n'importe quel format, y compris JavaScript Object Notation (JSON), HTML, XLT, Python, PHP ou un texte en clair. JSON est communément utilisé, car il est lisible à la fois par l'utilisateur et les machines, et il est indépendant du langage de programmation.

Les en-têtes de demande et les paramètres sont également importants dans les appels d'API REST, car ils contiennent des informations d'identification importantes telles que les métadonnées, les autorisations, les identificateurs URI (Uniform Resource Identifier), la mise en cache, les cookies, etc. Les en-têtes de requête et les en-têtes de réponse, ainsi que les codes d'état HTTP conventionnels, sont utilisés dans les API REST bien conçues.

Meilleures pratiques recommandées pour les API REST

Bien que la flexibilité soit l'un des grands avantages de la conception d'une API REST, cette même flexibilité permet de concevoir facilement une API rompue ou peu performante. Pour cette raison, les développeurs professionnels partagent les meilleures pratiques dans les spécifications d'API REST.

La spécification OpenAPI (OAS) établit une interface pour décrire une API de manière à permettre à un développeur ou une application de la reconnaître et de comprendre pleinement ses paramètres et ses fonctionnalités : nœuds finaux disponibles, opérations autorisées sur chaque nœud final, paramètres d'opération, méthodes d'authentification et autres informations. La dernière version, OAS3 (lien externe à IBM), inclut des outils pratiques, tels que le générateur OpenAPI, pour la génération de clients d'API et de modules de remplacement de serveur dans différents langages de programmation.

La sécurisation d'une API REST commence également par les meilleures pratiques du secteur, comme l'utilisation d'algorithmes de hachage pour la sécurité des mots de passe et du protocole HTTPS pour la transmission sécurisée des données. Une infrastructure d'autorisation telle que OAuth 2.0 (lien externe à IBM) peut aider à limiter les privilèges des applications tierces. En utilisant un horodatage dans l'en-tête HTTP, une API peut également rejeter toute demande qui arrive après un certain délai. La validation des paramètres et les jetons Web JSON sont d'autres moyens de garantir que seuls les clients autorisés peuvent accéder à l'API.

API REST et IBM Cloud

Les avantages des API REST signifient qu'elles continueront à faire partie intégrante du processus de développement logiciel, d'autant plus que la demande d'une meilleure expérience client et d'un plus grand nombre d'applications a un impact sur les opérations commerciales et informatiques.

Lorsqu'il s'agit de répondre à ces demandes, une évolution vers une plus grande automatisation sera utile. L'idéal serait de commencer par de petits projets au succès mesurable, que vous pourrez ensuite adapter et optimiser pour d'autres processus et dans d'autres parties de votre organisation. En travaillant avec IBM, vous aurez accès à des fonctionnalités d'automatisation optimisées par l'IA, y compris des flux de travail préconfigurés, afin d'accélérer l'innovation en rendant chaque processus plus intelligent.

Les outils et services IBM peuvent vous aider à résoudre des problèmes importants liés aux API, notamment la sécurité, la gouvernance et l'automatisation, tout en poursuivant la modernisation de vos applications.

Pour aller plus loin :

  • Découvrez IBM Cloud Pak for Integration qui repose sur la fonctionnalité de base d'IBM API Connect pour permettre aux architectes et aux administrateurs de contrôler complètement le cycle de vie de l'API.
  • Consultez IBM Cloud Docs qui contient la documentation des API prises en charge sur IBM Cloud.
  • Faites notre évaluation de la maturité de l'intégration pour évaluer votre niveau de maturité d'intégration dans des dimensions critiques et découvrez les actions que vous pouvez exécuter pour atteindre le niveau suivant. 
  • Téléchargez notre guide d'intégration agile qui explore les mérités d'une approche d'intégration des solutions basée sur les conteneurs, décentralisée et alignée sur les microservices.

Commencez par créer un compte IBM Cloud dès aujourd'hui.