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.
Ê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.
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.
404 c'est très bien. Définitions des codes de statut HTTP/1.1 de RFC2616
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
ou412 (Precondition Failed) e.g. conflict by performing conditional update
Plus d’informations gratuites InfoQ explore: REST book.