Back-end · 5 mondes · 15 étapes

API avec Node

Construire une API qui répond juste, valide ce qu'elle reçoit et se protège.

Progression

0 %

0/15 étapes terminées

Fondamental · 8 min de lecture

JSON et paramètres

Recevoir des adresses, renvoyer des données

1Définition

Une API reçoit des informations par trois canaux — le chemin (/joueurs/3), les paramètres de requête (?ville=Dakar) et le corps — et renvoie des données en JSON, annoncées par l'en-tête Content-Type: application/json.

2Principes fondamentaux

01

Chemin pour désigner, requête pour filtrer

/joueurs/3 est une ressource, /joueurs?ville=Dakar une vue filtrée de la collection.

02

Tout arrive en texte

Paramètres de chemin et de requête sont des chaînes : Number() avant de comparer à un identifiant.

03

Response.json pour tout

Succès et erreurs dans le même format, avec le bon en-tête.

04

Une forme d'erreur unique

{ erreur: "…" } partout : le client n'a qu'une façon de les afficher.

3Exemples pratiques

Lire les deux sortes de paramètres

Exemple
1const url = new URL(request.url);2const [, ressource, brut] = url.pathname.split("/");   // /joueurs/33const id = Number(brut);4const ville = url.searchParams.get("ville");           // ?ville=Dakar, ou null

searchParams décode les caractères spéciaux (Yaound%C3%A9 → Yaoundé) : on ne découpe jamais une URL à la main.

Filtrer seulement si demandé

Exemple
1const liste = ville === null2  ? joueurs3  : joueurs.filter((j) => j.ville === ville);4return Response.json(liste);

null signifie « pas de filtre » : la même route sert la liste complète et la liste filtrée.

4Erreurs courantes

Comparer un texte à un nombre

À éviter

joueurs.find((j) => j.id === brut)

À faire

joueurs.find((j) => j.id === Number(brut))

Pourquoi : 3 === "3" est faux : le joueur n'est jamais trouvé.

Oublier Content-Type

À éviter

return new Response(JSON.stringify(joueurs));

À faire

return Response.json(joueurs);

Pourquoi : Le client ne sait pas que c'est du JSON ; certains refusent de le lire.

Un format d'erreur par route

À éviter

"Introuvable"  /  { msg: … }  /  { error: … }

À faire

{ erreur: "…" } partout

Pourquoi : Le client doit gérer trois formats pour une seule notion.

5Subtilités à connaître

  • ◆searchParams.getAll("tag") lit un paramètre répété : ?tag=a&tag=b.
  • ◆La pagination passe par la requête (?page=2&limite=20) et renvoie souvent le total dans la réponse.
  • ◆Les identifiants numériques qui se suivent se devinent : beaucoup d'API publiques exposent plutôt des identifiants aléatoires.

6Vérifie ta compréhension

Question 1/3

Score 0

url.searchParams.get("x") sans paramètre x renvoie…

Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.