La ressource / utilisateur / 12345 n'existe pas. Disons que le consommateur essaie différents identifiants de manière aléatoire. Il n'y a pas d'autorisation. Tout utilisateur peut afficher n'importe quel utilisateur. Dans un sens plus large, ma question est "Que devriez-vous revenir si vous faites une ressource qui n'existe pas?" P>
Devrais-je renvoyer un utilisateur vide pour un identifiant qui n'existe pas ou dois-je renvoyer un message d'erreur avec code d'état approprié? P>
Quelle est la pratique typique / habituelle / recommandée? P>
9 Réponses :
Retour 404 Code d'état. P>
Un get ne devrait que récupérer quelque chose qui existe. p>
Alors je retournerais un 404. P>
qui ressemble à une erreur 404 pour moi - ressource introuvable. P>
@byron a raison, retour http 404. Vous souhaitez exploiter toutes les fonctionnalités de HTTP, et celles-ci incluent les codes d'état de la réponse. Donc, s'il existe une erreur client, renvoyez un code d'erreur 4xx et si votre code de serveur a un problème interne, renvoyez un code d'erreur 5xx, etc. p>
Richardson et Ruby's Services Web reposants ( O'Reilly) a une bonne discussion de cela et une annexe avec tous les codes d'erreur HTTP les plus importants et quand les utiliser. P>
Cela dépend un peu de vos problèmes de sécurité. J'enverrais soit un 404 s'il est ok que le devineur découvre si cet ID utilisateur n'existe pas ou n'envoie pas 401 pour toutes les tentatives d'accès non authentifié à toute ressource sous / utilisateur P>
Décidez de 401 ou 404 et de coller avec tous les identifiants, qu'ils existent ou non. Vous ne voulez pas de trouver un pirate informatique quels identifiants valent quelque chose en analysant ceux qui ont renvoyé le code d'erreur.
@Christian Hayter: voir la note de @eglasius sur la vérification de la vérification, d'abord, pour déterminer si 401 ou 404 est en ordre.
404 strong> p>
Cela dit, cela vous assume Ne comptez jamais sur l'utilisateur qui ne connaît pas d'ID utilisateur ... p>
Si l'utilisateur est authentifié et autorisé, renvoyez 404. Si l'utilisateur est non authentifié et non autorisé, envoyez-les à une page pour être autorisée. P>
de votre question initiale, sans autorisation, ceci est clairement un 404. Si vous devez ajouter une autorisation, il serait donc acceptable de renvoyer une 404 pour toutes les demandes non autorisées; Cela empêche une carte d'identité aléatoire en distinguant 401 ou 403 (existe, mais non autorisée) de 404s (inexistant) comme certaines des autres réponses suggèrent. Par RFC : P>
10.4.5 404 non trouvé ... Ce code d'état est couramment utilisé lorsque le serveur ne souhaite pas révéler exactement pourquoi La demande a été refusée, ou quand Aucune autre réponse n'est applicable. P> blockQuote>
Mon avis: Retournez un Vide 200. P>
Franchement, si une ressource de repos n'existe pas, cela n'existe pas. Cela signifie le retour 404. Dans votre cas, Toutefois, 12345 est un paramètre que vous utilisez pour identifier / consulter une entité de retour. Ressource / utilisateur / {userid} existe-t-il réellement, donc techniquement, je ne crois pas qu'il soit approprié de renvoyer un 404, bien qu'il soit clair pour voir l'argument de chaque côté. p>
Si vous avez envie de renvoyer deux codes d'état exposant votre système d'une manière ou d'une autre, je dirais que je dirais que vous diriez de bâton avec un Vide 200 OK. P>
Le repos n'est pas normalisé. Http (sur lequel dépend) est normalisé. Voulez-vous dire "typique" ou "habituel" ou "recommandé"?
Puis-je dire que je veux savoir tous les arguments?
@Erlanged: Veuillez mettre à jour votre question avec des informations supplémentaires. Il n'y a pas de "standard", donc cela aiderait à clarifier votre question. S'il vous plaît ne pas ajouter de commentaires. S'il vous plaît Mettre à jour i> la question et le titre pour refléter ce que vous voulez savoir.