Lorsque vous créez une API RESTful et qu'un utilisateur fournit un id de ressource qui n'existe pas, si vous renvoyez 404 Not Found
ou 400 Bad Request
.
Par exemple:
https://api.domain.com/v1/resource/foobar
Où foobar n'existe pas.
Je retournerais 404 en cas de ressource inexistante (signifie que le chemin de l'URL est incorrect) et je ne retournerai 400 que si l'appel de repos est fait avec des données invalides (@PathParam) par exemple
https://api.domain.com/v1/profile/test@email : ici, j'essaie d'obtenir le profil de l'identifiant de l'e-mail, mais l'e-mail lui-même est incorrect, donc je renverra 400.
https://api.domain.com/v1/profile1111/[email protected] renverra 404 car le chemin de l'url n'est pas valide.
Doit être 404 (introuvable). 400 est utilisé si vous ne pouvez pas répondre à la demande en raison d'une mauvaise syntaxe, mais pour votre cas, la syntaxe est correcte, mais il n'y a pas de barre de ressources.
Vous pouvez utiliser 400 si l'utilisateur utilise une API inexistante comme ci-dessous:
https://api.domain.com/v1/nonexistAPI/xyz/xyz
Vous pouvez également consulter ce blog de conception d'API REST qui vous indique comment concevoir vos codes d'erreur REST.
404 Not Found
est la bonne réponse, je pense, 400
concerne davantage le corps des demandes et non l'identifiant de la ressource, vous pouvez donc par exemple l'envoyer par des erreurs de validation.
Est-ce une demande valide? L'identifiant de la ressource peut-il exister? Est-il formaté comme un identifiant correct? Est-ce syntaxiquement correct? etc .. Si oui, vous pouvez utiliser, 404 Not Found
. Autrement 400 Bad Request
est plus approprié.
Selon la RFC ( https://tools.ietf.org/html/rfc2616#section-10.4 ) l'API devrait renvoyer 404 lorsque "Le serveur n'a rien trouvé correspondant à l'URI de la demande", qui est votre exemple.
400 serait lorsque la ressource est trouvée, mais la demande elle-même est mal formée.
Par exemple: i. https://api.domain.com/v1/resource/foobar
où foobar N'EXISTE PAS devrait retourner 404
ii. https://api.domain.com/v1/resource/foobar où foobar existe, mais la demande est fausse ({age: "NOTANINTEGER"}, une chaîne au lieu d'un int par exemple) , il devrait renvoyer 400.
J'espère que je pourrais vous aider.
404
serait une pratique plus courante. C'est pour Resource Not Found
. Dans votre cas, l'URL particulière n'est pas trouvée.
400
est généralement utilisé pour Bad Request
. Vous pouvez utiliser celui-ci pour toute mauvaise demande. Par exemple. MissingRequiredQueryParameter
, InvalidInput
.