Qu'est-ce qu'une API — les règles convenues pour l'échange entre programmes, et JSON

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Appeler une API, c'est envoyer une requête à une URL définie et recevoir une réponse. Les schémas montrent comment lire le JSON et les codes de statut.

Cet article traite des API.

Une API, ce sont les règles convenues entre programmes pour échanger des données.

Tu vas voir les trois éléments d'un appel et le JSON, le format de texte qui revient.

  • Ce que « appeler une API » envoie réellement, et où
  • Les trois éléments d'un appel — URL, méthode, réponse
  • Comment lire les clés et les valeurs du JSON qui revient
  • Le code de statut qui indique la réussite ou l'échec, et quoi faire ensuite selon le numéro

« Appeler une API », c'est envoyer une requête à une URL définie et recevoir une réponse

Les données météo ne sont pas détenues par ton propre programme, mais par le serveur d'un service externe.

Une API appelée avec des requêtes et des réponses HTTP est une API Web (Web API), et chacune des URL qu'elle accepte est un endpoint.

Un service externe peut être le fournisseur, et le serveur de my-app aussi.

Et un même écran n'appelle pas forcément un seul endpoint.

Un seul écran appelle trois endpoints
Ouvrir la pagemétéo/weatherTempérature/forecastPrévisions/newsAnnonces3 JSON pourun seul écran
Pour afficher une seule page météo, le navigateur envoie trois requêtes séparées. Les trois JSON qui reviennent sont assemblés en un seul écran.

Trois allers-retours de requête et de réponse ont lieu avant que la page n'apparaisse.

Le navigateur ne se connecte directement qu'au serveur de my-app.

Le même serveur est le fournisseur vu du navigateur, et l'appelant vu de l'API météo.

Appeler une API, c'est envoyer et recevoir

Appeler une API, c'est envoyer une requête à une URL définie et recevoir la réponse qui revient.

Chacune de ces URL est un endpoint ; l'appelant peut être le navigateur comme ton propre serveur, et le fournisseur n'est pas forcément un service externe.

Les trois éléments d'un appel — URL, méthode, réponse

Les guides et la documentation ne donnent que trois choses.

Où l'envoyer (l'URL), ce que tu veux faire (la méthode) et ce qui revient (la réponse).

La première, l'URL, se partage en deux rôles de part et d'autre du ?.

Le contenu d'une URL qui appelle l'API météo
https://api.example.com/weather?city=tokyo&units=metric
https://api.example.com/weather
  • Avant le ? : l'endpoint qui accepte la requête
  • Remplace /weather par /forecast et c'est un autre endpoint
?city=tokyo&units=metric
  • Après le ? : écris ici les conditions des données voulues
city=tokyo
  • Première condition. Écrite sous la forme nom=valeur
units=metric
  • Deuxième condition. Reliée à la précédente par &
Le cadre extérieur est une URL entière. Avant le ? se trouve la destination de la requête, après le ? les conditions des données voulues. On enchaîne autant de conditions que nécessaire avec &.

Ce qui suit le ? est un paramètre (query parameter : une condition des données voulues, ajoutée à la fin de l'URL sous la forme nom=valeur), aussi appelé paramètre de requête.

Le deuxième élément est la méthode (HTTP method : un mot défini comme GET ou POST, qui indique ce que la requête veut faire).

Tu l'écris en début de ligne, et elle change le comportement même quand tu envoies à la même URL.

GET ne change pas les données de l'autre côté, alors que POST les change au moment de l'envoi.

Les guides l'écrivent sous la forme d'une méthode suivie d'une URL.

Les lignes qui commencent par # sont des explications, et la ligne juste en dessous est la manière d'appeler.

# Récupérer la météo. La méthode d'abord, l'URL ensuite (paramètres à la fin)
GET https://api.example.com/weather?city=tokyo

# Enregistrer une réservation. Même URL, méthode différente, comportement différent
POST https://example.com/reservations

Le document qui rassemble cette manière d'appeler et la forme de la réponse qui revient est la documentation de l'API (API reference).

Quand un guide dit « consulte la documentation de l'API », c'est là que tu cherches les trois éléments.

Avant d'envoyer, tu ne décides que deux choses

Avant d'envoyer, tu ne décides que deux choses : où l'envoyer et ce que tu veux faire.

Où l'envoyer, c'est l'URL, dont la partie avant le ? est l'endpoint ; ce que tu veux faire, c'est la méthode. Le troisième élément, la réponse, est le seul que tu ne décides pas : tu lis ce qui revient.

Le JSON est un format de texte qui écrit les données par paires de clé et de valeur

Le « JSON qui est revenu » du guide, c'est le corps de la réponse.

JSON (JavaScript Object Notation : un format fait uniquement de texte, qui écrit les données par paires de clé et de valeur) est le format le plus courant pour le corps des API Web.

Le JSON que renvoie l'API météo a cette forme.

{
  "city": "Tokyo",
  "temp": 23.5,
  "rain": false,
  "forecast": [
    { "day": "mon", "high": 25 },
    { "day": "tue", "high": 22 }
  ]
}

Ce qui est aligné, ce sont des paires clé et valeur (key / value : la clé est le nom donné à une valeur, et la valeur le contenu désigné par ce nom).

Dans "temp": 23.5, temp est la clé et 23.5 la valeur ; le caractère : relie la clé et la valeur, et le caractère , sépare les paires.

Les paires s'alignent dans des { }, et une valeur peut elle-même être un [ ] ou un { }.

Le contenu d'un JSON de l'API météo
Un JSON (de { à })
"city": "Tokyo"
  • La clé est city, la valeur est la chaîne Tokyo
"temp": 23.5
  • La clé est temp, la valeur est le nombre 23.5 (sans " ")
"rain": false
  • La clé est rain, la valeur est false (true ou false)
"forecast": [ … ]
  • La clé est forecast, la valeur est un tableau
{ "day": "mon", "high": 25 }
  • Premier élément du tableau. Son contenu est là encore constitué de paires clé-valeur
{ "day": "tue", "high": 22 }
  • Deuxième élément du tableau. Il a les mêmes clés que le premier
Le cadre extérieur est un JSON entier, de { à }. Les quatre à l'intérieur sont des paires clé-valeur, et la quatrième valeur est un tableau dont chaque élément est à son tour un ensemble de paires entouré de { }.

La quatrième valeur est un tableau (array : plusieurs valeurs alignées dans l'ordre à l'intérieur de [ ]), et chaque élément est de nouveau entouré de { }.

Les { } et les [ ] s'imbriquent sur autant de niveaux que l'on veut.

Pour extraire un élément d'un tableau, tu le désignes par un numéro comme [0], et la numérotation commence à 0, pas à 1.

Les valeurs qui ne sont ni [ ] ni { } s'écrivent de trois façons, que l'on distingue selon la présence des " ".

Distinguer les trois types de valeur autres que [ ] et { }
==="Tokyo"23.5falseChaîneNombreSoit true,soit falseEntouré de " "Non entouré de " "Sans " ", écriten minuscules
La ligne du haut est la valeur telle qu'elle est écrite dans le JSON, celle du milieu son type, celle du bas la manière de la distinguer. Les deux reliées par un trait double sont la même valeur dite de deux façons.

Tel qu'il est reçu, le corps est une seule longue chaîne : désigner une clé ne suffit pas à en extraire la valeur.

Dans les livres d'initiation, tu le convertis d'abord en une forme dont les clés se lisent, avec une seule ligne comme JSON.parse, puis tu désignes une valeur par le nom de la clé, comme data.city.

La ligne écriteOù elle va chercher dans le JSONValeur obtenue
data.cityLa clé extérieure cityTokyo
data.tempLa clé extérieure temp23.5
data.forecast[0].highLa clé high du premier élément [0]25
data.tmpAucune clé de ce nomundefined

Seule la dernière ligne comporte une clé volontairement mal orthographiée, à un caractère près.

Une faute d'orthographe ne déclenche pas d'erreur : quand tu obtiens undefined, commence par comparer l'orthographe avec le JSON.

Le nom contient JavaScript, mais tous les langages savent le lire et l'écrire, d'où son usage pour les réponses d'API.

Le JSON n'est qu'une suite de paires nom-contenu

Le JSON n'est rien d'autre qu'une suite de caractères alignant des paires formées d'un nom et de son contenu.

Le nom est la clé, le contenu la valeur ; tel qu'il est reçu, c'est une seule longue chaîne, donc tu le convertis en une forme lisible par clé avant d'en extraire les valeurs.

Une réponse n'est pas toujours une réussite — le code de statut décide de la suite

L'API météo tourne en dehors de ton propre programme : un appel peut échouer.

C'est pourquoi une réponse n'arrive pas avec le corps seul.

Regarde ce qui revient en séparant les parties.

Le contenu d'une réponse qui revient
Une réponse
Le numéro à trois chiffres en tête
  • 200 pour une réussite, 404 pour un échec
  • Regarde ici en premier, avant de lire le corps
Le corps (JSON)
  • Même pour la même API météo, le contenu change entre réussite et échec
Le corps en cas de réussite
  • { "city": "Tokyo", "temp": 23.5 }
  • La température se lit à la clé temp
Le corps en cas d'échec
  • { "error": "city not found" }
  • Pas de clé temp, seulement la raison
Le cadre extérieur est une réponse. Un numéro à trois chiffres vient en tête, et le corps suit. Le contenu du corps change du tout au tout entre la réussite et l'échec.

Les trois chiffres en tête forment le code de statut (status code : le numéro qui indique la réussite ou l'échec, et de quelle sorte).

Regarde d'abord le numéro, et ne lis les clés du corps qu'en cas de réussite.

On n'apprend pas les trois chiffres par cœur : c'est le premier chiffre qui décide de la suite.

Le premier chiffre et ce qu'il faut faire ensuite
===Commence par 2200 et autresCommence par 4404, 401, autresCommence par 5500 et autresRevenu commedemandéProblème dansce qui est envoyéAnomalie chezle fournisseurLire les clésdu corpsCorriger l'URL etles conditionsAttendre un peupuis rappeler
La ligne du haut est le premier chiffre du numéro, celle du milieu ce qui s'est passé, celle du bas ce que fait l'appelant. Les deux reliées par un trait double sont le numéro et sa signification, la même chose dite de deux façons.

Même avec la même API météo, le numéro qui revient change selon ce que tu as envoyé et l'état du fournisseur.

Outre le 404, un 500 revient quand une anomalie survient du côté du fournisseur.

Selon ce que tu envoies, le numéro qui revient et la suite à donner changent
?city=tokyo?city=tokiomal orthographié?city=tokyoanomalie côté API200404500temp estprésentSeulement l'erreurParfois pasdu JSONTempérature à l'écranAfficher l'échecde récupérationAttendre un peupuis rappeler
Chaque ligne est un appel. De gauche à droite : le paramètre envoyé, le numéro qui revient, le contenu du corps, et ce que fait my-app.

404 n'est pas seulement le numéro du « page inexistante » : avec une API, il revient aussi quand aucune donnée ne correspond aux conditions des paramètres.

Si tu appelles comme indiqué et qu'un 404 revient, compare l'orthographe et les paramètres avec la documentation de l'API.

Parmi les numéros qui commencent par 4, le 401 est celui du cas où rien n'indique qui est l'appelant, ou bien ce qui est indiqué n'est pas correct.

La clé d'API est ce que tu joins à la requête pour l'indiquer.

Lire le numéro avant le corps

Quand une réponse revient, lis le numéro avant le corps.

S'il commence par 2, le corps contient la clé voulue ; s'il commence par 4, corrige l'URL et les conditions envoyées ; s'il commence par 5, attends un peu et rappelle.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Que fait le programme quand un guide dit « appeler l'API météo » ?

Question 2Dans le fragment de JSON "temp": 23.5, temp correspond à quoi ?

Question 3Quand tu appelles l'API météo et que le code de statut 404 revient, que vérifies-tu en premier ?