API REST : HTTP Status Codes et leurs significations - Letecode

API REST : HTTP Status Codes et leurs significations

En mettant en place un API REST, il est important de connaître les réponses que peuvent retourner le serveur à chaque requête, c'est là qu’intervient les HTTP status codes ( codes d’état ).

Jean Claude Mbiya
Jean Claude Mise à jour : 14 mai 2023 2959

Les API REST utilisent la partie Status-Line d'un message de la réponse HTTP pour informer les clients du résultat global de leur requête. RFC 2616 définit la syntaxe Status-Line comme indiqué ci-dessous :

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP définit ces codes d'état standard qui peuvent être utilisés pour transmettre les résultats de la demande d'un client. Les codes d'état sont divisés en cinq catégories.
  • 1xx : Informationnel – Communique des informations au niveau du protocole de transfert.
  • 2xx : Succès – Indique que la demande du client a été acceptée avec succès.
  • 3xx : Redirection – Indique que le client doit prendre des mesures supplémentaires afin de compléter sa demande.
  • 4xx : Erreur client – ​​Cette catégorie de codes d'état d'erreur pointe du doigt les clients.
  • 5xx : Erreur de serveur – Le serveur assume la responsabilité de ces codes d'état d'erreur.

1xx HTTP codes : Informationnel

Code http
Signification
Description
100
Continue
Une réponse intermédiaire. Indique au client que la partie initiale de la requête a été reçue et n'a pas encore été rejetée par le serveur. Le client DEVRAIT continuer en envoyant le reste de la requête ou, si la requête a déjà été complétée, ignorer cette réponse. Le serveur DOIT envoyer une réponse finale une fois la requête terminée.
101 
Switching Protocol
Envoyé en réponse à un en-tête de requête de mise à niveau du client et indique le protocole vers lequel le serveur bascule.
102 
Processing (WebDAV)
Indique que le serveur a reçu et traite la requête, mais qu'aucune réponse n'est encore disponible.
103 
Early Hints
Principalement destiné à être utilisé avec l'en-tête Link. Il suggère que l'agent utilisateur commence à précharger les ressources pendant que le serveur prépare une réponse finale.

2xx HTTP codes : Succès 

Code Http
Signification
Description
200 
OK
Indique que la requête a réussi.
201 
Created
Indique que la requête a réussi et qu'une nouvelle ressource a été créée en conséquence.
202 
Accepted
Indique que la requête a été reçue mais pas encore terminée. Il est généralement utilisé dans les requêtes d'exécution de journaux et le traitement par lots.
203
Non-Authoritative Information
Indique que les méta-informations renvoyées dans l'en-tête d'entité ne sont pas l'ensemble définitif tel que disponible sur le serveur d'origine, mais sont collectées à partir d'une copie locale ou tierce. L'ensemble présenté PEUT être un sous-ensemble ou un sur-ensemble de la version originale.
204 
No content
Le serveur a répondu à la requête mais n'a pas besoin de renvoyer un corps dans la réponse. Le serveur peut renvoyer les méta-informations mises à jour.
205 
Reset content
Indique au client de réinitialiser le document qui a envoyé cette requête.
206 
Partial content
Il est utilisé lorsque l'en-tête Range est envoyé par le client pour ne demander qu'une partie d'une ressource.
207 
Multi-Status (WebDAV)
Un indicateur pour un client que plusieurs opérations se sont produites et que l'état de chaque opération peut être trouvé dans le corps de la réponse.
208 
Already Reported  (WebDAV)
Permet à un client d'indiquer au serveur que la même ressource (avec la même liaison) a été mentionnée précédemment. Il n'apparaît jamais comme un véritable code de réponse HTTP dans la ligne d'état et n'apparaît que dans les corps.
226
IM used
Le serveur a répondu à une requête GET pour la ressource, et la réponse est une représentation du résultat d'une ou plusieurs manipulations d'instance appliquées à l'instance actuelle.

3xx HTTP codes : Redirection

Code Http
Signification
Description
300
multiple choices
La requête a plus d'une réponse possible. L'agent utilisateur ou l'utilisateur doit en choisir un.
301
Moved permanently
L'URL de la ressource demandée a été modifiée de façon permanente. La nouvelle URL est donnée par le champ Location d'en-tête dans la réponse. Cette réponse peut être mise en cache sauf indication contraire.
302
Found
L'URL de la ressource demandée a été temporairement modifiée. La nouvelle URL est donnée par le chaamp Location dans la réponse. Cette réponse ne peut être mise en cache que si elle est indiquée par un champ d'en-tête Cache-Control ou Expires.
303
See Other
La réponse peut être trouvée sous un URI différent et DEVRAIT être récupérée en utilisant une méthode GET sur cette ressource.
304
Not Modified
Indique au client que la réponse n'a pas été modifiée, afin que le client puisse continuer à utiliser la même version mise en cache de la réponse.
305 
Use Proxy (Obsolète)
Indique qu'une réponse demandée doit être accessible par un proxy.
306 
(Inutilisé)
C'est un code d'état réservé et il n'est plus utilisé.
307
Temporary Redirect
Indique au client d'obtenir la ressource demandée à un autre URI avec la même méthode que celle utilisée dans la requête précédente. Il est similaire à 302 Found une exception près que la même méthode HTTP sera utilisée que celle utilisée dans la requête précédente.
308
Permanent Redirect (experimental)
Indique que la ressource est maintenant située de manière permanente à un autre URI, spécifié par l'en-tête Location. Il est similaire à 301 Moved Permanentlyune exception près que la même méthode HTTP sera utilisée que celle utilisée dans la requête précédente.

4xx HTTP codes : Erreur Client

Code Http
Signification
Description
400 
Bad Request
La requête n'a pas pu être comprise par le serveur en raison d'une syntaxe incorrecte. Le client NE DEVRAIT PAS répéter la requête sans modifications.
401 
Unauthorized
Indique que la requête nécessite des informations d'authentification de l'utilisateur. Le client PEUT répéter la requête avec un champ d'en-tête d'autorisation approprié
402
Payment Required (Experimental)
Réservé pour une utilisation future. Il est destiné à être utilisé dans les systèmes de paiement numériques.
403
Forbidden
Requête non autorisée. Le client n'a pas les droits d'accès au contenu. Contrairement au 401, l'identité du client est connue du serveur.
404
Not Found
Le serveur ne trouve pas la ressource demandée.
405
Method Not Allowed
La méthode HTTP de requête est connue du serveur mais a été désactivée et ne peut pas être utilisée pour cette ressource.
406
Not Acceptable
Le serveur ne trouve aucun contenu conforme aux critères donnés par l'agent utilisateur dans l'en-tête Accept envoyé dans la requête.
407
Proxy Authentication Required
Indique que le client doit d'abord s'authentifier auprès du proxy.
408
Request Timeout
Indique que le serveur n'a pas reçu une requête complète du client dans le délai d'attente alloué au serveur.
409
Conflict
La requête n'a pas pu être traitée en raison d'un conflit avec l'état actuel de la ressource.
410
Gone
La ressource demandée n'est plus disponible sur le serveur.
411
Length Required
Le serveur refuse d'accepter la requête sans une longueur de contenu définie. Le client PEUT répéter la demande s'il ajoute un champ Content-Length d'en-tête valide.
412
Precondition Failed
Le client a indiqué dans ses en-têtes des conditions préalables que le serveur ne respecte pas.
413 
Request Entity Too Large
L'entité de la requête est supérieure aux limites définies par le serveur.
414
Request-URI Too Long
L'URI demandée par le client est plus longue que le serveur ne peut l'interpréter.
415
Unsupported Media Type
Le type de média dans le champ Content-type n'est pas pris en charge par le serveur.
416
Requested Range Not Satisfiable
La plage spécifiée par le champ Range d'en-tête dans la requête ne peut pas être remplie.
417
Expectation Failed
L'attente indiquée par le champ Expect d'en-tête de la requête ne peut pas être satisfaite par le serveur.
418
I’m a teapot (RFC 2324)
Il a été défini comme la blague d'avril et ne devrait pas être implémenté par les serveurs HTTP réels. ( RFC 2324 )
419
Page Expired
indique qu'une session a expiré lors du traitement d'une demande de publication
420
Enhance Your Calm (Twitter)
Renvoyé par l'API Twitter Search and Trends lorsque le débit du client est limité.
422
Unprocessable Entity (WebDAV)
Le serveur comprend le type de contenu et la syntaxe de l'entité de requête, mais le serveur n'est toujours pas en mesure de traiter la requête pour une raison quelconque.
423
Locked (WebDAV)
La ressource en cours d'accès est verrouillée.
424
Failed Dependency (WebDAV)
La requête a échoué en raison de l'échec d'une requête précédente.
425
Too Early (WebDAV)
Indique que le serveur ne veut pas prendre le risque de traiter une requête qui pourrait être rejouée.
426
Upgrade Required
Le serveur refuse d'exécuter la requête. Le serveur traitera la demande après la mise à niveau du client vers un protocole différent.
428
Precondition Required
Le serveur d'origine exige que la demande soit conditionnelle.
429
Too Many Requests
L'utilisateur a envoyé trop de demandes dans un laps de temps donné ("limitation du débit").
431
Request Header Fields Too Large
Le serveur ne veut pas traiter la demande car ses champs d'en-tête sont trop volumineux.
444 
No Response (Nginx)
Le serveur Nginx ne renvoie aucune information au client et ferme la connexion.
449 
Retry With (Microsoft)
La demande doit être réessayée après avoir effectué l'action appropriée.
450
Blocked by Windows Parental Controls (Microsoft)
Les contrôles parentaux de Windows sont activés et bloquent l'accès à la page Web donnée.
451
Unavailable For Legal Reasons
L'agent utilisateur a demandé une ressource qui ne peut pas légalement être fournie.
499
Client Closed Request (Nginx)
La connexion est fermée par le client pendant que le serveur HTTP traite sa demande, ce qui empêche le serveur de renvoyer l'en-tête HTTP.

5xx HTTP codes : Erreur serveur

Code d'état
signification
Description
500
Internal Server Error
Le serveur a rencontré une condition inattendue qui l'a empêché de répondre à la demande.
501
Not Implemented
La méthode HTTP n'est pas prise en charge par le serveur et ne peut pas être gérée.
502
Bad Gateway
Le serveur a reçu une réponse non valide alors qu'il travaillait comme passerelle pour obtenir la réponse nécessaire pour traiter la demande.
503
Service Unavailable
Le serveur n'est pas prêt à traiter la demande (ou en maintenance )
504
Gateway Timeout
Le serveur agit comme une passerelle et ne peut pas obtenir de réponse à temps pour une demande.
505
HTTP Version Not Supported (Experimental)
La version HTTP utilisée dans la requête n'est pas prise en charge par le serveur.
506
Variant Also Negotiates (Experimental)
Indique que le serveur a une erreur de configuration interne : la ressource de variante choisie est configurée pour s'engager elle-même dans une négociation de contenu transparente et n'est donc pas un point de terminaison approprié dans le processus de négociation.
507
Insufficient Storage (WebDAV)
La méthode n'a pas pu être exécutée sur la ressource car le serveur n'est pas en mesure de stocker la représentation nécessaire pour mener à bien la demande.
508
Loop Detected (WebDAV)
Le serveur a détecté une boucle infinie lors du traitement de la requête.
510
Not Extended
D'autres extensions de la requête sont nécessaires pour que le serveur la satisfasse.
511
Network Authentication Required
Indique que le client doit s'authentifier pour accéder au réseau.

Si vous avez d'autres descriptions ou d’autres codes d'état non repris dans la liste, laissez moi un commentaire.

1
Jean Claude Mbiya
Jean Claude Mbiya

Développeur Web full stack, Développeur Android (Certifié Google AAD) Formateur dans les domaines du numérique, Créateur letecode.com 👨‍💻. Je suis un grand passionné des nouvelles technologies et j'adore partager ce que j'apprend.

0 commentaire(s)

Laissez votre commentaire à @johnmbiya

ou pour laisser un commentaire