Comme avec la plupart des choses, "ça dépend". Mais pour moi, votre pratique n'est pas mauvais et ne va pas à l'encontre de la spécification HTTP soi. Cependant, nous allons clarifier certaines choses.
Tout d'abord, d'URI doit être opaque. Même si ils ne sont pas opaques aux gens, ils sont opaques aux machines. En d'autres termes, la différence entre http://mywebsite/api/user/13
, http://mywebsite/restapi/user/13
est la même que la différence entre http://mywebsite/api/user/13
et http://mywebsite/api/user/14
c'est à dire pas le même n'est pas la même période. Si une erreur 404 serait tout à fait approprié pour http://mywebsite/api/user/14
(si ce n'est pas l'utilisateur), mais pas nécessairement la seule réponse appropriée.
Vous pouvez également revenir à un vide de réponse de 200 ou plus explicitement 204 (Pas de Contenu) de réponse. Cela permettrait de transmettre quelque chose d'autre pour le client. Cela impliquerait que la ressource identifiée par l' http://mywebsite/api/user/14
n'a pas de contenu ou n'est essentiellement rien. Cela signifie qu'il est une telle ressource. Toutefois, cela ne signifie pas nécessairement que vous demandez, il ya certains utilisateurs ont persisté dans une banque de données avec l'id 14. C'est votre souci, pas la préoccupation du client qui fait la demande. Donc, si elle fait sens pour le modèle de vos ressources, de cette façon, aller de l'avant.
Il y a quelques implications en matière de sécurité afin de donner à vos clients l'information qui permettrait de rendre plus facile pour eux de deviner légitime d'URI. Retour d'un 200 sur la rate au lieu d'une 404, peut donner au client une idée de ce que au moins l' http://mywebsite/api/user
partie est correcte. Un client malveillant pourrait continuer à essayer différentes entiers. Mais pour moi, un client malveillant serait capable de deviner l' http://mywebsite/api/user
de la partie de toute façon. Une meilleure solution serait d'utiliser l'UUID. c'est à dire http://mywebsite/api/user/3dd5b770-79ea-11e1-b0c4-0800200c9a66
est mieux que http://mywebsite/api/user/14
. En faisant cela, vous pouvez utiliser votre technique de retour 200 sans donner beaucoup de loin.