HTTP Get avec 204 Aucun Contenu: Est-ce normal
Est-il un phénomène normal pour un Requête HTTP GET d'avoir une réponse avec le code d'état 204 - No Content
? Comme, est-ce sémantiquement correct par rapport à ce que un HTTP GET est censé accomplir? Je sais qu'un 204 - No Content
est bon pour un Requête HTTP POST. Pour OBTENIR la demande, si aucune donnée n'est renvoyée, est l'204 code de statut approprié? Dois-je utiliser 404, ou simplement s'en tenir à 200 pour le succès, mais ont une réponse vide?
La cas d'utilisation pour cette question est une application Java que je suis en train d'écrire pour Google App Engine. Je suis en envoyant une demande à une servlet, mais les données à envoyer au client est transmis à travers un Canal de l'API socket au lieu de la Réponse HTTP. Actuellement, mon client envoie un POST avec pas de contenu dans le corps de la requête, et attend une réponse 204 retour de la servlet avant de sonder le Canal de l'API socket. Parce que pas de données que j'ai envoyé dans le corps de la demande, je suis débattre si elle fait plus de sens pour moi d'envoyer un GET au lieu de POST.
- Il y a un très bon article à propos de 204 code d'état, veuillez trouver en suivant le lien: blog.ploeh.dk/2013/04/30/...
Vous devez vous connecter pour publier un commentaire.
Selon la RFC partie du code d'état 204, il me semble un choix valable pour une requête GET.
Un
404 Not Found
,200 OK
avec corps est vide et204 No Content
ont sens complètement différent, parfois, nous ne pouvons pas utiliser un code d'état, mais enfreindre les règles et qu'ils vont revenir à vous mordre un jour ou plus tard. Donc, si vous pouvez utiliser un code d'état, utilisez-le!Je pense que le choix de GET ou POST est très personnel que les deux d'entre eux vont faire le travail, mais je vous recommande de garder un POSTE au lieu d'une, pour deux raisons:
Je utiliser GET/204 avec une bonne collection est une position tableau de connu de longueur fixe, mais avec des trous.
Votre combinaison actuelle d'un POSTE avec un HTTP 204 réponse est fine.
À l'aide d'un POST universelle de remplacement pour OBTENIR un n'est pas pris en charge par la RFC, comme chaque a son propre but et de la sémantique.
Le but de l'OBTENIR est de récupérer une ressource. Par conséquent, tout permis, un HTTP 204 ne serait pas le meilleur choix étant donné que le contenu EST attendu dans la réponse. Un HTTP 404 Non Trouvé ou un HTTP 410 Gone seraient de meilleurs choix si le serveur n'a pas pu fournir la ressource demandée.
La RFC aussi spécifiquement appelle un HTTP 204 comme une réponse appropriée pour PUT, POST et DELETE, mais omet-il pour OBTENIR.
Voir le RFC pour la sémantique de l'OBTENIR.
Il y a d'autres codes de réponse qui pourrait également être retournés, indiquant l'absence de contenu, ce qui serait plus appropriée qu'une HTTP 204.
Par exemple, pour un conditionnelle OBTENIR vous pourriez recevoir une HTTP 304 not Modified réponse qui pourrait contenir aucun contenu du corps.
Le POST/GET avec 204 semble très bien dans la première vue et fonctionnera également.
Documentation dit,
2xx -- Cette classe de codes d'état indique que l'action demandée par le client a été reçue, comprise, acceptée et traitée avec succès. alors que
4xx -- Le 4xx classe de code d'état est prévu pour les situations dans lesquelles le client semble avoir commis une erreur.
Depuis, la demande a bien été reçue, comprise et traitée sur le serveur. Le résultat a été que la ressource n'a pas été trouvé. Donc, dans ce cas, ce n'était pas une erreur sur le côté client ou le client n'a pas commis une erreur.
Donc ce doit être une série 2xx code et pas 4xx. Envoi 204 (Pas de Contenu), dans ce cas, mieux qu'une 404 ou 410 réponse.