Aller au contenu principal

Qu'est-ce qu'une API ? À quoi ça sert ?

Une API est une interface de programmation (Application Programming Interface) qui permet de définir le contract de communication entre deux entités informatique, généralement une application et un système tiers.

Le terme API est très large car il peut se baser sur différents protocoles de communication et des situations variées.

Par exemple, en composant une librairie en C# ou en Java, toutes les fonctions exposées en public par la librairie peuvent être considérées comme étant une API, au même titre qu'il y a des API pour communiquer avec les systèmes d'exploitation, OpenGL ou DirectX pour communiquer avec un processeur graphique, etc.

Donc API est un terme large, mais nous allons évoquer dans cette section le cas des API REST, précisément des API en http / https.

info

Un abus de langage régulier consiste à dire API ou WebAPI pour parler du sujet de cette section : les API REST, qui sont quasiment intégralement construites sur des Web API HTTP

Qu'est-ce que API REST ? Et une API Web ?

  • API - Application Programming Interface : nous l'avons vu plus haut, c'est une interface de programmation entre deux système. Une API
  • API Web : une application accessible via un protocole HTTP ou HTTPS. Mais elle n'est pas forcement RESTful
  • API REST : _Re_presentational _S_tate _T_ransfer : un style d'architecture pour les API, qui consiste à les faire fonctionner d'une certaine façon.

REST a été conçu en suivant le standard du web, c'est pourquoi l'implémentation d'une API REST est quasiment systématiquement en HTTP. Les grands principes Du REST sont les suivantes :

NormeDescriptionExplication
Uniform interfaceInterface uniformeUtilise des standards (URI, verbes HTTP, JSON) pour que toutes les requêtes se ressemblent.
Client-serverClient-serveurSépare l'interface utilisateur (client) et le stockage des données (serveur), les rendant indépendants.
StatelessSans étatChaque requête du client doit contenir toutes les infos nécessaires, le serveur ne stocke aucune session, le résultat d'une demande ne dépend pas de ce qu'à fait le client précédemment.
CacheableCache déclaratifLes réponses du serveur doivent indiquer si elles peuvent être stockées par le client pour éviter les requêtes inutiles.
Layered systemSystème en couchesPas avoir de différence de fonctionnement pour le client, selon qu'il parle directement au serveur ou à un intermédiaire (répartiteur de charges).

Concrètement, que permet une API REST ?

Une API REST fournit un contrat qui permet des interactions (nous allons détailler la manière dans les prochaines pages). Une entité informatique va exposer des endpoints (par exemple : gamecodeclub.com/api/v1/articles), et selon ce que mes droits utilisateurs permettent, je vais pouvoir interroger l'applicatif derrière l'API, pour par exemple récupérer des articles ou envoyer le contenu des articles.

Cela permet de découpler le fonctionnement et l'implémentation de l'API du client qui va l'utiliser. Derrière mon API, peu importe que l'applicatif utilise une base de donnée MySQL, PostGre, ou de simples fichiers textes : pour interroger le contenu de l'API, j'ai toujours des endpoints créés d'une manière standardisé.

Ainsi, je peux développer une application en me basant sur les contrats de l'API, et cette interface me permettra de récupérer des informations voire de faire des actions.

Schema de séquence d'une WebAPI :