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 “élément n’existe pas”.

Si la page elle-même n’existe pas, j’utiliserai évidemment 404. Cependant, une de mes pages a un argument userid (c’est une page “edit user”) et au cas où aucun utilisateur avec l’ID utilisateur donné n’existe, j’affiche une page d’erreur, mais j’aimerais aussi envoyer un en-tête d’état 4xx (puisque “200 OK” ne correspond pas vraiment).

Je suppose que 404 serait correct car il n’est “pas trouvé” et non “fichier non trouvé”, mais je me demande s’il existe un meilleur code pour ce cas.

    Devenir trop intelligent avec des codes d’erreur HTTP obscurs est une mauvaise idée. Les navigateurs réagissent parfois de manière inutile pour masquer la situation. S’en tenir à 404.

    Un code 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. Donc, cela fonctionne aussi bien pour les pages, les sous-sections de pages et tout élément existant sur la page qui a une requête spécifique à afficher.

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

    404 est très bien. Définitions de code d’état HTTP / 1.1 de RFC2616

    Cela dépend si userid est un identificateur de ressource ou un paramètre supplémentaire. Si c’est le cas, il est possible de retourner 404 sinon vous pourriez retourner un autre code comme

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

    Plus d’infos dans InfoQ gratuit explore: livre REST .