Qu’est-ce qu’une API REST ?

API REST : définition

Une API REST est une interface de programmation d’application (API) conforme aux principes de conception du style architectural REST (Representational State Transfer), un style utilisé pour connecter les systèmes hypermédias distribués. Les API REST sont parfois appelées API RESTful ou API Web RESTful. 

Défini en 2000 par le chercheur en informatique Roy Fielding dans sa thèse de doctorat, REST offre aux développeurs un niveau relativement élevé de flexibilité, de cohérence, d’évolutivité et d’efficacité. Les API REST constituent un moyen léger de créer des API Web et sont couramment utilisées pour faciliter l’échange de données entre les applications, les services Web et les bases de données, et pour connecter les composants dans les architectures de type 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 au sein d’une autre application, d’un autre service ou d’une autre base de données. L’application ou le service qui accède aux ressources est le client, et l’application ou le service qui contient la ressource est le serveur.

Certaines API, comme SOAP ou XML-RPC, imposent un cadre strict aux développeurs. Mais les développeurs peuvent développer des API REST en utilisant pratiquement n’importe quel langage de programmation et prendre en charge différents formats de données. La seule exigence est de respecter les six principes de conception REST suivants, également appelés contraintes architecturales.

Interface uniforme

Toutes les demandes d’API pour une même ressource doivent avoir la même apparence, quelle que soit la provenance de la demande. L’API REST doit garantir que le même élément de données, tel que le nom ou l’adresse e-mail d’un utilisateur, n’appartient qu’à un seul identifiant de ressource uniforme (URI). Les ressources ne doivent pas être trop volumineuses, mais doivent contenir toutes les informations dont le client pourrait avoir besoin.

Découplage client-serveur

Dans la conception d’API REST, les applications client et serveur doivent être indépendantes l’une de l’autre. La seule information que l’application cliente doit connaître est l’URI de la ressource demandée ; elle ne peut pas interagir avec l’application serveur d’une autre manière. De même, l’application serveur ne doit pas modifier l’application client, si ce n’est en lui transmettant les données demandées par le biais du protocole HTTP.

Apatridie

Les API REST sont apatrides, ce qui signifie que chaque requête 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 client.

Capacité de mise en cache

Dans la mesure du possible, les ressources doivent pouvoir être mises en cache côté client ou serveur. Les réponses du serveur doivent également contenir des informations indiquant si la mise en cache est autorisée pour la ressource fournie. L’objectif est d’améliorer les performances côté client, tout en augmentant l’évolutivité côté serveur.

Architecture de système en couches

Dans les API REST, les appels et les réponses passent par différentes couches. La règle d’or consiste à ne pas supposer que les applications client et serveur se connectent directement l’une à l’autre. Il peut y avoir divers intermédiaires dans la boucle de communication. Les API REST doivent être conçues de manière que ni le client ni le serveur ne puissent dire s’ils communiquent avec l’application finale ou avec un intermédiaire.

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 (comme les applets Java). Dans ces cas, le code doit s’exécuter uniquement à 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) au sein d’une ressource.

Par exemple, une API REST utilise une requête GET pour récupérer un enregistrement. Une requête POST crée un nouvel enregistrement. Une requête PUT met à jour un enregistrement et une requête DELETE en supprime un. Toutes les méthodes HTTP peuvent être utilisées dans les appels 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 donné, ou horodatage, est connu sous le nom de 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 texte brut. JSON est populaire car il est lisible tant par les humains que par les machines, et qu’il ne dépend pas d’un langage de programmation.

Les en-têtes et paramètres de requête 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 identifiants de ressources uniformes (URI), la mise en cache, les cookies, etc. Les en-têtes de requête et de réponse, ainsi que les codes d’état HTTP conventionnels, sont utilisés dans des API REST bien conçues.

GraphQL et API REST : quelle est la différence ?

Bonnes pratiques dans le domaine des API REST

Si la flexibilité est un avantage significatif de la conception d’API REST, elle accroît également le risque de concevoir une API défaillante ou peu performante. C’est pourquoi les développeurs professionnels partagent les bonnes pratiques en matière de spécifications d’API REST.

La spécification OpenAPI (OAS) établit une interface pour décrire une API de manière à permettre à tout développeur ou à toute application de la découvrir et de comprendre pleinement ses paramètres et ses capacités. Ces informations comprennent les points de terminaison disponibles, les opérations autorisées sur chaque point de terminaison, les paramètres d’opération, les méthodes d’authentification, etc. La dernière version, OAS3, comprend des outils pratiques, tels que le générateur OpenAPI, qui permettent de générer des clients API et des stubs de serveur dans différents langages de programmation.

La sécurisation des API REST commence également par le respect des bonnes pratiques du secteur. Utilisez des algorithmes de hachage pour sécuriser les mots de passe, et le protocole HTTPS pour sécuriser la transmission des données. Un cadre d’autorisation comme OAuth 2.0 permet de limiter les droits d’accès des applications tierces.

En utilisant un horodatage dans l’en-tête HTTP, une API peut également rejeter toute requête arrivant après un certain laps de temps. La validation des paramètres et les jetons Web JSON sont d’autres moyens de s’assurer que seuls les clients autorisés peuvent accéder à l’API.

Solutions connexes
IBM API Connect

Développez, gérez, sécurisez et socialisez tous les types d’interface de programmation des applications (API) de façon fluide, quel que soit leur emplacement.

Explorer API Connect
Solutions d’intégration IBM

Renforcez votre entreprise grâce à une connectivité et à une automatisation transparentes avec un logiciel de plateforme d’intégration.

Découvrir les solutions d’intégration IBM
Services de conseil en cloud

Déverrouillez le potentiel complet du cloud hybride à l'ère de l'IA agentique.

Découvrir les services de conseil sur le cloud
Passez à l’étape suivante

IBM API Connect prend en charge tous les types d’interfaces de programmation des applications (API) modernes tout en renforçant la sécurité et la gouvernance. Les capacités d’IA générative automatisent les tâches manuelles, vous permettant de gagner du temps et de garantir la qualité. 

  1. Explorer IBM API Connect
  2. Découvrir les solutions d’intégration IBM