2010-12-02 38 views
11

Notre équipe développe des applications RESTFul ... nous discutons de l'approche "BEST PRACTICE".REST: Cartographie 404 Codes d'état HTTP

La réponse au code d'état 404 doit-elle être renvoyée pour une requête de type filtre? Dis mon URL GET est

.../1 ​​/ Service/startsWith/a.json

et renvoie toutes les valeurs qui commencent par A dans ma base de données ... mais si aucun "une" valeurs se trouvent devrais-je juste retourner le code d'état 200 avec une chaîne json vide? ou code d'état 404.

Merci!

Répondre

15

Voir this question, dans la mise à jour à ma réponse j'adresse votre problème. Plus précisément ce bit,

Je pense que la réponse soit à retour 404 dépend de la quelle est la ressource qui est en cours de récupération. Est-ce que est une représentation d'un résultat de recherche , ou est-ce une représentation d'un produit ? Pour le savoir, vous avez vraiment besoin de pour voir la relation de lien qui nous a conduit à vers l'URL.

Si l'URL est censé retourner une représentation de produit alors un 404 doit être retourné si le code ne existe pas. Si l'URL renvoie un résultat, alors il ne doit pas retourner un 404.

recherche Le résultat final est que ce que l'URL ressemble est pas le facteur déterminant . Cela dit, il est convention que les chaînes de requête sont utilisées pour renvoyer des résultats de recherche il est donc plus intuitive pour utiliser ce style d'URL lorsque vous ne voulez pas retourner 404s.

+5

Oui, je suis d'accord avec Darrel. Simplement, "aucun résultat" est un résultat de recherche valide. La ressource existe, sa représentation est simplement "vide". Donc, 404 n'est pas justifié. Demander une ressource concrète par un identifiant (/ clients/123) qui n'existe pas justifie un 404. Ce n'est pas une requête, c'est plus un "déréférencement" d'un pointeur. –

3

Il peut être plus judicieux de renvoyer un code 204, ce qui signifie «Aucun contenu». Ce serait un peu plus efficace car un statut 204 ne peut avoir aucun contenu de document, et vous pouvez détecter le code au lieu d'avoir à analyser la réponse.