web-dev-qa-db-fra.com

Quel est le code d'état HTTP le plus approprié pour une page d'erreur "élément introuvable"

Je suis curieux de savoir quel est le code de statut HTTP le plus approprié pour une page "un élément n'existe pas".

Si la page elle-même n'existe pas, j'utiliserai évidemment 404. Cependant, l'une de mes pages a un argument userid (c'est une page "modifier l'utilisateur") et dans le cas où aucun utilisateur ne possède l'identifiant indiqué. existe, j'affiche une page d'erreur, mais j'aimerais également envoyer un en-tête d'état 4xx (car "200 OK" ne convient pas).

Je suppose que 404 serait ok puisqu'il est "non trouvé" et non "fichier non trouvé", mais je me demande s'il existe un meilleur code pour ce cas.

89
ThiefMaster

Être trop malin avec des codes d'erreur HTTP plus obscurs est une mauvaise idée. Les navigateurs réagissent parfois de manière inefficace pour masquer la situation. Bâton avec 404.

109
bmargulies

Un code de retour 404 signifie en réalité "ressource non trouvée" et s'applique à toute entité pour laquelle une demande a été faite mais non satisfaite. Cela fonctionne donc aussi bien pour les pages, les sous-sections de pages que pour tout élément existant sur la page qui doit faire l'objet d'une requête spécifique.

Donc, 404 est le bon code à utiliser dans ce scénario. Notez que ne fait pas s’applique à 'serveur non trouvé', ce qui est une situation différente dans laquelle une demande a été émise sans réponse du tout, par opposition à une réponse sans la ressource demandée.

36
Eight-Bit Guru
13
KiNgMaR

Cela dépend si l'ID utilisateur est un identifiant de ressource ou un paramètre supplémentaire. Si c'est le cas, vous pouvez renvoyer 404, sinon vous pourriez renvoyer un autre code comme

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

Plus d’informations gratuites InfoQ explore: REST book.

7
cetnar