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 · 9 min de lecture
HTTP sans mystère
Ce qui circule réellement entre un client et un serveur
1Définition
HTTP est un protocole de questions-réponses. Une requête porte une méthode, un chemin, des en-têtes et parfois un corps ; une réponse porte un code de statut, des en-têtes et un corps. Le serveur ne se souvient de rien entre deux requêtes : chacune doit contenir tout ce qu'il faut pour y répondre.
2Principes fondamentaux
01
Les méthodes ont un sens
GET lit sans modifier, POST crée, PATCH modifie une partie, PUT remplace, DELETE supprime. Les caches et les robots s'y fient.
02
Le statut d'abord
2xx réussite, 4xx faute du client, 5xx faute du serveur. Un client décide quoi faire en lisant ce seul nombre.
03
Sans état
Chaque requête est indépendante : l'identité voyage dans chaque requête (un jeton), pas dans la mémoire du serveur.
04
Le standard Request / Response
Node, Next.js, Deno, Bun et Cloudflare partagent les mêmes objets Request et Response, issus du navigateur.
3Exemples pratiques
Une requête et sa réponse, en clair
1GET /joueurs/3 HTTP/1.12Host: api.sys-code.app3Authorization: Bearer jeton-codey4 5HTTP/1.1 200 OK6Content-Type: application/json7 8{"id":3,"pseudo":"bo"}Tout HTTP tient dans cette forme : une ligne de requête, des en-têtes, une ligne vide, un corps. Les outils du navigateur (onglet Réseau) la montrent pour chaque appel.
Une route au standard du web
1async function handler(request) {2 const url = new URL(request.url);3 if (request.method === "GET" && url.pathname === "/ping") {4 return new Response("pong");5 }6 return new Response("Introuvable", { status: 404 });7}Une fonction, une requête en entrée, une réponse en sortie : tout le reste d'un serveur est construit sur cette forme.
4Erreurs courantes
Tout en 200
À éviter
return Response.json({ ok: false, erreur: "Introuvable" });À faire
return Response.json({ erreur: "Introuvable" }, { status: 404 });Pourquoi : Les clients, les caches et la surveillance lisent le statut. Un 200 qui cache une erreur les trompe tous.
GET qui modifie
À éviter
GET /joueurs/3/supprimerÀ faire
DELETE /joueurs/3Pourquoi : Un robot d'indexation ou un préchargement de lien déclencherait la suppression.
Comparer l'URL entière
À éviter
if (request.url === "/ping")À faire
if (new URL(request.url).pathname === "/ping")Pourquoi : request.url contient le domaine et les paramètres : la comparaison échoue toujours.
5Subtilités à connaître
- ◆HEAD et OPTIONS existent aussi : HEAD renvoie les en-têtes sans le corps, OPTIONS sert au navigateur pour vérifier les règles CORS.
- ◆HTTP/2 et HTTP/3 changent le transport, pas le modèle : méthodes, statuts et en-têtes restent les mêmes.
- ◆Les noms d'en-têtes ne sont pas sensibles à la casse :
Authorizationetauthorizationdésignent le même en-tête.
6Vérifie ta compréhension
Question 1/3
Score 0
Un 4xx signifie…
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.