Informatif 1xx
Codes 1xx
100Continue — le serveur a reçu les en-têtes, le client doit envoyer le corps
101Switching Protocols — passage à WebSocket ou HTTP/2
102Processing — requête reçue, traitement en cours (WebDAV)
103Early Hints — précharger les ressources avant la réponse finale
Note d'utilisation
# 100 Continue : le client envoie l'en-tête Expect, attend 100 curl -H "Expect: 100-continue" -d @large.json URL # 101 : passage à WebSocket Connection: Upgrade / Upgrade: websocket
Succès 2xx
Codes 2xx
200OK — réponse de succès standard
201Created — ressource créée avec succès (POST/PUT)
202Accepted — requête reçue, traitement asynchrone
203Non-Authoritative Info — transformée par un proxy
204No Content — succès sans corps de réponse (DELETE)
205Reset Content — succès, le client doit réinitialiser le formulaire
206Partial Content — requête de plage satisfaite
207Multi-Status — codes de statut multiples (WebDAV)
Utilisation API REST
GET → 200Retourner la ressource avec le corps
POST → 201Ressource créée, inclure l'en-tête Location
PUT → 200/204Ressource mise à jour (avec/sans corps)
DELETE → 204Supprimé, aucun corps retourné
PATCH → 200Mise à jour partielle, retourner la ressource modifiée
Redirection 3xx
Codes 3xx
300Multiple Choices — plusieurs représentations disponibles
301Moved Permanently — ressource déplacée, mettre à jour les favoris
302Found — redirection temporaire (souvent mal utilisé comme 303)
303See Other — redirection avec GET après POST
304Not Modified — utiliser la version en cache (ETag/If-Modified)
307Temporary Redirect — même méthode, emplacement temporaire
308Permanent Redirect — même méthode, emplacement permanent
Comportement des redirections
301/308Permanent — les moteurs de recherche mettent à jour l'index
302/307Temporaire — l'URL d'origine reste canonique
301/302Peut changer la méthode en GET lors de la redirection
307/308Doit conserver la méthode HTTP d'origine
Erreur client 4xx
Erreurs client courantes
400Bad Request — syntaxe malformée ou paramètres invalides
401Unauthorized — authentification requise ou échouée
403Forbidden — authentifié mais non autorisé
404Not Found — la ressource n'existe pas
405Method Not Allowed — méthode HTTP non supportée
406Not Acceptable — impossible de satisfaire l'en-tête Accept
408Request Timeout — le client est trop lent pour envoyer la requête
409Conflict — la requête est en conflit avec l'état actuel
Autres erreurs client
410Gone — ressource définitivement supprimée (pas juste absente)
411Length Required — en-tête Content-Length manquant
412Precondition Failed — If-Match/If-Unmodified échoué
413Content Too Large — corps de requête dépasse la limite
414URI Too Long — l'URL dépasse la limite du serveur
415Unsupported Media Type — Content-Type non accepté
422Unprocessable Content — syntaxe valide, erreurs sémantiques
429Too Many Requests — limite de taux dépassée
Erreur serveur 5xx
Codes 5xx
500Internal Server Error — exception non gérée sur le serveur
501Not Implemented — le serveur ne supporte pas la méthode
502Bad Gateway — le serveur amont a envoyé une réponse invalide
503Service Unavailable — surchargé ou en maintenance
504Gateway Timeout — le serveur amont n'a pas répondu à temps
505HTTP Version Not Supported — version non gérée
507Insufficient Storage — le serveur ne peut pas stocker la requête (WebDAV)
511Network Auth Required — connexion au portail captif requise
Stratégie de réessai
500Réessayer avec backoff ; peut être transitoire
502/504Réessayer — le problème amont peut se résoudre
503Vérifier l'en-tête Retry-After avant de réessayer
501/505Ne pas réessayer — corriger la requête client
Codes courants
Codes les plus utilisés (en un coup d'œil)
200OK — tout a fonctionné
201Created — nouvelle ressource créée
204No Content — succès, corps vide
301Moved Permanently — mettre à jour l'URL
304Not Modified — utiliser le cache
400Bad Request — corriger la requête
401Unauthorized — se connecter d'abord
403Forbidden — permissions insuffisantes
404Not Found — mauvaise URL ou supprimé
422Unprocessable — erreurs de validation
429Too Many Requests — ralentir
500Server Error — pas votre faute
502Bad Gateway — défaillance proxy/amont
503Unavailable — réessayer plus tard
Référence des en-têtes
En-têtes de requête
AcceptTypes de médias de réponse souhaités (ex. application/json)
AuthorizationIdentifiants (token Bearer, Basic base64)
Content-TypeType de média du corps de la requête
If-None-MatchConditionnel : ETag pour la validation du cache
If-Modified-SinceConditionnel : date pour la validation du cache
Cache-ControlDirectives de mise en cache (no-cache, max-age)
User-AgentChaîne d'identification du client
En-têtes de réponse
Content-TypeType de média du corps de la réponse
LocationURL cible de redirection ou de la ressource créée
ETagBalise d'entité pour la validation du cache
Cache-ControlDirectives de mise en cache (max-age, no-store)
Retry-AfterTemps d'attente avant réessai (429/503)
WWW-AuthenticateSchéma d'authentification requis (envoyé avec 401)
Set-CookieDéfinir un cookie sur le client
Modèles courants
Flux de mise en cache
# Première requête — le serveur retourne un ETag GET /api/data → 200, ETag: "abc123" # Requête suivante — conditionnelle GET /api/data, If-None-Match: "abc123" → 304 Not Modified (utiliser le cache)
Flux d'authentification
# Requête non authentifiée GET /api/secret → 401, WWW-Authenticate: Bearer # Avec token GET /api/secret, Authorization: Bearer → 200 OK
Limitation de débit
# Réponse de limitation de débit 429 Too Many Requests Retry-After: 60 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1700000000
Négociation de contenu
# Le client préfère JSON, accepte XML Accept: application/json, application/xml;q=0.9 # Le serveur ne peut pas satisfaire → 406 Not Acceptable # Le serveur retourne la meilleure correspondance → 200 + Content-Type