Disons que nous avons l'appel REST suivant:
GET api/companies/5
(obtenir la société avec l'ID 5)
Si la société "5" n'existe pas, nous renvoyons généralement un 404 Not Found
réponse.
Mais maintenant, prenons cet appel:
GET api/companies/5/invoices/10
(obtenez la facture 10 de la société 5)
Maintenant, si la société "5" n'existe pas, retournons-nous toujours un 404 Not Found
? Ou si un 404 n'est retourné que si la ressource la plus externe ne peut pas être trouvée (facture 10, dans ce cas).
Aurait Bad Request
peut-être une meilleure option?
404 est votre meilleure réponse. Selon le HTTP RFC, http://www.ietf.org/rfc/rfc2616.txt , une 400 Bad Request signifie:
La demande n'a pas pu être comprise par le serveur en raison d'une syntaxe incorrecte.
Attendu qu'un 404 déclare:
Le serveur n'a rien trouvé correspondant à l'URI de demande.
L'URI entier est votre identifiant de ressource, et vous ne trouvez pas de ressource correspondante pour cet identifiant particulier.
404 peut provoquer une confusion - la ressource est-elle manquante ou l'URL réelle est-elle incorrecte?
J'irais personnellement pour le 422
code:
The 422 (Unprocessable Entity) status code means the server
understands the content type of the request entity (hence a
415(Unsupported Media Type) status code is inappropriate), and the
syntax of the request entity is correct (thus a 400 (Bad Request)
status code is inappropriate) but was unable to process the contained
instructions. For example, this error condition may occur if an XML
request body contains well-formed (i.e., syntactically correct), but
semantically erroneous, XML instructions.