Requête HTTP GET État 204 Vs 404
J'ai 2 ressources de l'Utilisateur et de l'Album. Un utilisateur dispose d'une liste d'albums. Pour obtenir albums il y a 2 API REST.
- utilisateurs/{idutilisateur}/albums/{albumId} obtenir de l'album par albumId si elle ne trouve pas de retour 404
- utilisateurs/{idutilisateur}/albums obtenir tous les albums par nom d'utilisateur . Dans ce cas, si un utilisateur n'a pas d'album, alors qu'est-ce que le code de statut 204 ou 404?
OriginalL'auteur Navrattan Yadav | 2015-12-16
Vous devez vous connecter pour publier un commentaire.
Est l'absence de toute album vraiment vu comme une erreur? En supposant que les albums sont retournés comme un tableau JSON, la commune de la réponse à une telle situation serait un HTTP 200 avec un tableau vide le corps.
Retour 404 signaux que la ressource n'existe pas, genre de dire qu'il n'est même pas possible à demander la liste des albums pour cet utilisateur particulier. Mais en fait, il est possible de retourner la liste des albums, c'est juste que la liste est vide. Il ne semble pas du tout exceptionnel pour moi. C'est complètement en contraste avec la récupération d'un album à l'aide d'un ID qui n'existe pas (à l'aide de votre autre point de terminaison); dans une telle situation une erreur 404 est correct.
Tandis qu'une 204 semble meilleure qu'une 404, parce qu'elle au moins indique au client que le requrest a été un succès, mais n'avaient pas de contenu, c'est l'intention n'est pas vraiment à être utilisé pour signaler un "absence". Plutôt, il signale que la ressource N'existe pas, mais pour une raison quelconque, le serveur choisi de ne pas inclure la ressource dans le corps de la réponse - par exemple l'objet de la demande aurait pu être tout simplement de passer de nouveau des en-têtes pour le client.
Une 204 peut également être utilisé comme une réponse à une requête POST où une action a été menée par le serveur sans nécessairement la création de toute nouvelle ressource (ce qui impliquerait une 201), ou lorsque cela est pour quelque autre raison de ne pas pertinent de retourner n'importe quelle ressource.
Je pense qu'il est clair que ce que vous avez besoin est un
Je suis en désaccord. Il y a de données, un tableau vide. À mon humble avis, il serait vraiment étrange de forcer le client à traiter parfaitement requête valide pour une liste - que momentanément se trouve être vide comme un erreur, donc nous sommes d'accord que la 404 est exclue. Cependant, 204 m'a un usage spécial pour le cas où le client ne veut pas ou ne peut être donné aucune ressource. La plupart des api que j'ai jamais vu serait d'utiliser un tableau vide, je ne vois pas pourquoi il serait en aucune façon controversée. Préférez-vous la valeur null sur un emplacement vide listes de clients normaux côté de la programmation?
Ouais désolé, j'étais mise à jour de ma réponse alors que vous avez répondu. Commentaire Initial était trop rapide...
Je vois ce que vous dites. Je suppose qu'au lieu de retourner à 200 avec un tableau vide, j'ai généralement choisir de revenir 204 avec rien dans le corps de la réponse.
OriginalL'auteur JHH
Code D'Erreur 404
Le site web d'hébergement de serveur va généralement de générer un "404 not Found" page web lorsqu'un utilisateur tente de suivre une fracture ou un lien mort.
Code De Retour 204
Le serveur a satisfait à la demande, mais n'a pas besoin de retourner une entité-corps.
Conclusion
Vous avez évidemment besoin de lever une 204 erreur. Si vous utilisez le 404, l'utilisateur peut être perturbé. De plus, vous utilisez 404 lorsque le ciblées album n'existe pas. Utilisation 404 1 et 2 est en manque de logique.
Signale simplement que 204 n'est pas un code d'erreur.
OriginalL'auteur Saphirel
Voici ce que le RFC2616 qui définit le protocole HTTP est dit à propos de l'État-codes:
Dans votre cas, la demande a été couronnée de succès, mais il n'y a pas d'albums de spectacle, alors vous devriez certainement utiliser un état de la 2xx catégorie.
Voici ce que le RFC dit à propos de l'204 statut:
La RFC stipule que la 204 est principalement destinées à permettre aux intrants, de sorte que vous ne devriez pas utiliser ce un. Je voudrais utiliser le 200 dans ce cas.
OriginalL'auteur Jefferson Lima