46 votes

Une API RESTful doit-elle renvoyer 404 pour des tableaux d'objets?

Disons qu'il y a un produit avec des commandes. Si vous demandez / products / product_id, il retournera un 404 si product_id n'existe pas. Mais / products / product_id / orders devrait-il renvoyer 404 s'il n'existe aucune commande pour ce produit ou doit-il renvoyer un tableau vide?

61voto

Darrel Miller Points 56797

Je retournerais une collection vide. Un produit avec zéro commande est un concept tout à fait valable, alors l'existence d'une collection de commandes vides est plus logique qu'un 404 qui en déduirait que ce produit ne dispose pas d'une collection de commandes.

10voto

Vihung Points 3066

Vous devriez vraiment faire un seul des deux choses

Renvoyer une 200 (OK) code d'état, et un tableau vide dans le corps.

Ou le Retour d'un 204 (NO CONTENT) code d'état, et NON le corps de la réponse.

Pour moi, l'option 2 semble plus techniquement correcte et garder en ligne avec le RESTE et HTTP principes.

Cependant, l'option 1 me semble plus efficace pour le client parce que le client n'a pas besoin de la logique supplémentaire pour différencier les deux (succès) des codes d'état. Depuis qu'elle sait qu'elle sera toujours de recevoir un tableau, il suffit de vérifier si elle a obtenu aucun, un ou plusieurs éléments et de traiter de manière appropriée

2voto

Jason Watts Points 2542

Voici ma suggestion pour tous les codes de statut d'api reposants

Choisir les codes de statut http pour les erreurs de services reposants

1voto

kaasdude Points 3

À mon avis:

Nous parlons http valeurs d'état ici, et devrait être d'un niveau plus élevé de donner des réponses.

On devrait le voir dans les couches de délégués. Comme lors de votre api n'est pas en mesure de répondre à une demande, dans le cas où l'appel de l'api elle-même n'est pas disponible, alors vous pourriez répondre avec une erreur 404.

Mais lors de votre appel, et il pourrait répondre à une collecte de données, mais son vide de collection, vous pouvez revenir juste un http 200, avec un résultat vide.

Je voudrais utiliser http valeurs d'état de donner une indication sur la validation de la demande, et non pas directement le rendre dépendant du contenu dans le plus profond de l'api de couches.

Ou on pourrait suivre strictement les protocoles trouvé sur le net, mais personne ne les suit...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X