177 votes

Quel est le code d'état HTTP le plus approprié pour une page d'erreur "item not found" ?

Je suis curieux de savoir quel est le code d'état HTTP le plus approprié pour une page "l'article n'existe pas".

Si la page elle-même n'existe pas, j'utiliserai évidemment 404. Cependant, l'une de mes pages a un userid (il s'agit d'une page "modifier l'utilisateur") et si aucun utilisateur avec l'ID donné n'existe, j'affiche une page d'erreur, mais j'aimerais également envoyer un en-tête de statut 4xx (car "200 OK" ne convient pas vraiment).

Je suppose que 404 serait acceptable puisque c'est "non trouvé" et non "fichier non trouvé", mais je me demande s'il n'y a pas un meilleur code pour ce cas.

196voto

bmargulies Points 49855

Il n'est pas souhaitable de faire preuve de trop d'ingéniosité en utilisant des codes d'erreur HTTP plus obscurs. Les navigateurs réagissent parfois d'une manière peu utile qui obscurcit la situation. Il faut s'en tenir à 404.

64voto

Eight-Bit Guru Points 4613

Un code de retour 404 signifie en fait "ressource non trouvée" et s'applique à toute entité pour laquelle une demande a été faite mais n'a pas été satisfaite. Il fonctionne donc aussi bien pour les pages, les sous-sections de pages et tout élément existant sur la page qui a une demande spécifique de rendu.

Le code 404 est donc le bon code à utiliser dans ce scénario. Notez qu'il ne s'appliquent au "serveur non trouvé", qui est une situation différente dans laquelle une demande a été émise mais n'a pas reçu de réponse, par opposition à une réponse qui n'a pas permis d'obtenir la ressource demandée.

27voto

Ricardo Gellman Points 73

204 :

Pas de contenu". Ce code signifie que le serveur a réussi à traité la demande, mais qu'il ne va pas renvoyer de contenu.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204

22voto

KiNgMaR Points 856

11voto

cetnar Points 6170

Cela dépend si userid est un identifiant de ressource ou un paramètre supplémentaire. Si c'est le cas, vous pouvez renvoyer 404, sinon vous pouvez renvoyer d'autres codes comme

400 (bad request) ‐ indicates a bad request
ou
412 (Precondition Failed) e.g. conflict by performing conditional update

Plus d'informations en gratuit InfoQ explore : REST livre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X