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
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 nullsearchParams décode les caractères spéciaux (Yaound%C3%A9 → Yaoundé) : on ne découpe jamais une URL à la main.
Filtrer seulement si demandé
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: "…" } partoutPourquoi : 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.