Chapitre 114 minIntermédiaire
C'est quoi une API ? Définition et exemples
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer ce qu'est une API et ce qu'elle apporte à une application ;
- distinguer une API web d'une API de bibliothèque ou du système ;
- décrire le trajet d'une requête du client jusqu'à la base de données ;
- reconnaître une API REST et les autres familles d'API web.
3 exercices corrigés1 schéma
Une API (Application Programming Interface, interface de programmation d'application) est un ensemble de règles qui permet à un programme d'utiliser les données ou les fonctions d'un autre programme, sans connaître son code. Une API web fait ce travail à travers le réseau, avec le protocole HTTP. Ce chapitre explique à quoi sert une API, ce qui distingue une API REST des autres, et où les API apparaissent dans le BTS SIO.
Une API, c'est un contrat
Imagine un restaurant. Tu ne vas pas en cuisine : tu lis la carte, tu passes commande au serveur, et il te rapporte ton plat. La carte dit ce que tu peux demander et sous quelle forme ; ce qui se passe en cuisine ne te regarde pas. Une API joue le rôle de la carte et du serveur : elle publie la liste des demandes possibles, la forme exacte de chaque demande et de chaque réponse, et elle cache tout le reste (le langage, la base de données, l'organisation du code).
Ce contrat apporte trois choses :
- le découplage : le front et le serveur évoluent chacun de leur côté tant que le contrat est respecté. Tu peux remplacer MySQL par PostgreSQL, ou réécrire le serveur de PHP en Node.js, sans toucher à l'application mobile ;
- la réutilisation : une même API sert le site web, l'application mobile, l'outil interne du service comptable et le logiciel d'un partenaire ;
- le contrôle : les autres programmes ne touchent jamais la base de données directement. Ils passent par l'API, qui vérifie qui demande quoi et applique les règles de gestion.
Les API ne sont pas toutes sur le web
Le mot API est plus large que le web. Tu en utilises déjà sans le savoir :
| Type d'API | Exemple | Comment on l'appelle |
|---|---|---|
| API d'une bibliothèque | Les fonctions de Math en JavaScript, la classe PDO en PHP | Un appel de fonction dans ton code |
| API du système d'exploitation | L'API Win32 de Windows, les appels système de Linux (open, read) | Un appel de fonction, traduit en appel au noyau |
| API du navigateur | Le DOM, fetch, localStorage, la géolocalisation | Du JavaScript dans la page |
| API web | L'API d'AppliFrais, l'API de paiement d'une banque, une API de météo | Une requête HTTP à travers le réseau |
Dans ce cours, « API » désigne une API web, et le plus souvent une API REST. Quand tu entends « appeler une API », « consommer un service web » ou « interroger un web service », c'est la même idée : envoyer une requête HTTP à un serveur qui renvoie des données.
Le modèle client-serveur
Une API web fonctionne en client-serveur. Le client est le programme qui envoie la requête : un front React, une application Android, un script Python, une application C# de bureau, ou un autre serveur. Le serveur reçoit la requête, fait le travail (lire la base, calculer, appliquer une règle de gestion), puis renvoie une réponse. Le client ne voit jamais la base de données.
Concrètement, voici ce qui se passe quand Lucas Martin, visiteur médical, ouvre la page « Mes fiches » d'AppliFrais :
- Le front envoie la requête
GET https://api.gsb.example/v1/fiches?mois=2026-10, avec son jeton d'authentification. - L'API vérifie le jeton : c'est bien Lucas, visiteur n° 7.
- Elle lit dans la base la fiche d'octobre 2026 de ce visiteur, et seulement la sienne.
- Elle renvoie le code
200 OKet un document JSON qui décrit la fiche. - Le front affiche la fiche. Il ne sait pas si les données viennent de MySQL, d'un fichier ou d'un autre service.
Ce que l'API renvoie : des données, pas une page
Un site web classique en PHP renvoie une page HTML complète, prête à afficher. Une API renvoie des données brutes, que le client met en forme lui-même. Voici la réponse de l'API d'AppliFrais à la requête précédente :
{
"id": 12,
"visiteurId": 7,
"mois": "2026-10",
"etat": "CR",
"montantValide": null
}
Ce document en JSON (chapitre 5) dit que la fiche n° 12 appartient au visiteur 7, porte sur octobre 2026, est à l'état CR (en cours de saisie) et n'a pas encore de montant validé. Le front web l'affiche dans un tableau, l'application mobile dans une liste, le logiciel du partenaire l'enregistre dans sa propre base : trois présentations différentes, une seule API.
| Site web classique | API | |
|---|---|---|
| Ce que renvoie le serveur | Une page HTML complète | Des données (JSON, plus rarement XML) |
| Qui met en forme | Le serveur | Le client |
| Qui l'utilise | Un humain, dans un navigateur | Un programme |
| Navigation | Liens et formulaires | Requêtes construites par le code du client |
| Exemple | https://frais.gsb.example/mes-fiches.php | https://api.gsb.example/v1/fiches |
Une API REST, c'est quoi ?
REST (Representational State Transfer) est un style d'architecture décrit par Roy Fielding dans sa thèse de doctorat en 2000. Ce n'est ni un protocole, ni une norme, ni une bibliothèque : c'est un ensemble de principes. Une API est dite REST ou RESTful quand elle les respecte. Les principaux :
- tout ce que l'API manipule est une ressource (une fiche, un visiteur, un justificatif), identifiée par une adresse (une URI) :
/v1/fiches/12; - on agit sur les ressources avec les méthodes standard de HTTP :
GETpour lire,POSTpour créer,PUTouPATCHpour modifier,DELETEpour supprimer ; - chaque requête est sans état (stateless) : elle contient tout ce qu'il faut pour être traitée, y compris la preuve de l'identité du client. Le serveur ne garde pas de session entre deux requêtes ;
- le serveur répond avec un code de statut HTTP standard (
200,201,404…) et une représentation de la ressource, le plus souvent en JSON.
Le chapitre 4 détaille les six contraintes de Fielding et la façon de nommer les ressources. Retiens pour l'instant le couple qui fait REST : l'URI dit sur quoi on agit, la méthode HTTP dit ce qu'on fait.
GET /v1/fiches lire la liste des fiches
POST /v1/fiches créer une fiche
GET /v1/fiches/12 lire la fiche 12
PATCH /v1/fiches/12 modifier une partie de la fiche 12
DELETE /v1/fiches/12 supprimer la fiche 12
Les autres familles d'API web
REST est la famille la plus répandue, mais pas la seule. Tu dois savoir les reconnaître : le chapitre 12 les compare en détail.
| Famille | Principe | Format | Où on la rencontre |
|---|---|---|---|
| REST | Des ressources à des URI, les méthodes HTTP | JSON surtout | La grande majorité des API publiques et internes |
| SOAP | Des opérations appelées en envoyant une enveloppe XML, décrites dans un fichier WSDL | XML | Systèmes d'information anciens, banques, administrations, échanges B2B |
| GraphQL | Une seule adresse ; le client écrit une requête qui dit exactement quels champs il veut | JSON | Applications avec beaucoup de données reliées (réseaux sociaux, e-commerce) |
| gRPC | Des procédures distantes, décrites dans un fichier .proto, sur HTTP/2 | Protocol Buffers (binaire) | Échanges entre microservices d'une même organisation |
| Webhook | L'inverse d'un appel : c'est le serveur qui appelle ton application quand un événement se produit | JSON | Notifications de paiement, événements GitHub |
| WebSocket | Une connexion permanente, dans les deux sens | Texte ou binaire | Messagerie instantanée, tableaux de bord en temps réel, jeux |
Des API que tu peux appeler dès aujourd'hui
Pour t'entraîner, rien ne vaut une vraie API publique, gratuite et sans inscription :
- API Découpage administratif de l'État :
https://geo.api.gouv.fr/communes?codePostal=69001renvoie les communes qui ont ce code postal, en JSON. - Open-Meteo : des prévisions météo pour des coordonnées GPS, sans clé d'API pour un usage non commercial.
- JSONPlaceholder : une fausse API de démonstration (articles, commentaires, utilisateurs) qui accepte même les
POST,PUTetDELETEsans rien enregistrer.
Colle la première adresse dans ton navigateur : tu viens d'appeler une API REST avec une requête GET. Le navigateur affiche le JSON brut, souvent mis en forme par son visualiseur intégré. Pour les autres méthodes, il faut un client HTTP : c'est l'objet du chapitre 11.
Où les API tombent au BTS SIO
Le référentiel du bloc 2 SLAM attend que tu saches « exploiter les technologies Web pour mettre en œuvre les échanges entre applications, y compris de mobilité ». Concrètement :
| Épreuve | Ce qu'on attend de toi |
|---|---|
| E5 (oral, bloc 1, commun aux deux options) | Présenter ton parcours et ton portfolio ; une API documentée et déployée peut figurer dans ton tableau de synthèse au titre de la mise à disposition d'un service (cours E5) |
| E6 SLAM (épreuve d'option, bloc 2) | Faire évoluer en une heure l'une de tes deux réalisations, à partir d'une expression des besoins remise par la commission : ajouter une route, un filtre, un contrôle de rôle, puis le démontrer (cours E6 SLAM) |
| E7 SLAM (écrit de cybersécurité, U7) | Lire un échange HTTP ou un journal de serveur, choisir le code de statut, distinguer authentification et autorisation, sécuriser une route, choisir entre clé d'API et jeton (chapitre 8 du cours E7 SLAM) |
Le chapitre 13 rassemble les questions types d'examen et un cas corrigé complet.
Exercices
Exercice 1 sur 3 API ou pas API ? Réussi À revoir
Pour chaque situation, dis si un programme utilise une API web, et justifie en une phrase.
- L'application mobile d'une banque affiche le solde du compte.
- Un étudiant ouvre
https://www.legifrance.gouv.frdans son navigateur et lit un article de loi. - Un script Python récupère chaque nuit les cours du change auprès d'un service en ligne et les enregistre dans un fichier.
- Un programme C# appelle
Math.Round(3.14159, 2). - Le site d'un e-commerçant affiche un bouton « Payer » qui passe par un prestataire de paiement, lequel prévient ensuite le site que le paiement a réussi.
Voir la réponseMasquer la réponse de l'exercice 1
- Oui : l'application envoie une requête HTTP à l'API de la banque et affiche les données reçues (presque toujours du JSON).
- Non : c'est un humain qui consulte une page HTML. Le navigateur fait bien une requête HTTP, mais il reçoit une page à afficher, pas des données destinées à un programme.
- Oui : le script appelle une API web de cours du change et traite la réponse.
- Non, pas une API web : c'est l'API d'une bibliothèque (.NET), appelée directement dans le code, sans réseau.
- Oui, dans les deux sens : le site appelle l'API du prestataire pour créer le paiement, puis le prestataire appelle le site par un webhook pour le prévenir du résultat (chapitre 12).
Tu avais trouvé ?
Exercice 2 sur 3 Lire une première réponse Réussi À revoir
L'API d'AppliFrais renvoie ce document à la requête GET /v1/fiches/11 :
{
"id": 11,
"visiteurId": 7,
"mois": "2026-09",
"etat": "VA",
"montantValide": 389.2
}
- Quelle ressource a été demandée, et avec quelle méthode ?
- Que peux-tu dire de cette fiche ?
- Le front affiche « 389,20 € ». Qui a mis le montant en forme : le serveur ou le client ?
- Avec quelle méthode et quelle adresse supprimerait-on cette fiche, si l'API l'autorisait ?
Voir la réponseMasquer la réponse de l'exercice 2
- La fiche n° 11, avec la méthode
GET(lecture). - Elle appartient au visiteur 7, porte sur septembre 2026, est à l'état
VA(validée) et son montant validé est de 389,20 €. - Le client : l'API renvoie le nombre brut
389.2; le front le formate selon la langue de l'utilisateur, avec la virgule, deux décimales et le symbole euro. DELETE /v1/fiches/11. En pratique, l'API d'AppliFrais refuserait : une fiche validée ne se supprime pas, c'est une règle de gestion.
Tu avais trouvé ?
Exercice 3 sur 3 Pourquoi passer par une API ? Réussi À revoir
Le laboratoire GSB veut une application mobile pour les visiteurs. Un développeur propose de laisser l'application se connecter directement au serveur MySQL d'AppliFrais, « c'est plus simple ». Donne trois raisons de passer plutôt par une API.
Voir la réponseMasquer la réponse de l'exercice 3
- Sécurité : se connecter à MySQL suppose d'embarquer un compte et un mot de passe de la base dans l'application, qui se décompile en quelques minutes. N'importe qui pourrait lire ou modifier toutes les fiches. Avec une API, l'application ne détient qu'un jeton personnel, et l'API ne renvoie que les fiches du visiteur connecté.
- Règles de gestion : c'est l'API qui interdit de modifier une fiche clôturée ou de valider sa propre fiche. Sans API, chaque client devrait réimplémenter ces règles, et un client modifié pourrait les ignorer.
- Découplage : si la structure de la base change, seule l'API est modifiée ; les applications déjà installées sur les téléphones continuent de fonctionner tant que le contrat de l'API ne change pas.
On peut ajouter l'exposition réseau : ouvrir le port 3306 de MySQL sur Internet exposerait la base à des attaques directes.
Tu avais trouvé ?