J'ai une application qui envoie des messages aux utilisateurs. Dans une demande de publication, une chaîne XML est transférée qui comprend tous les utilisateurs qui devraient recevoir ce message particulier. Si l'un des utilisateurs de la liste n'existe pas, je renvoie la liste des utilisateurs manquants au client pour une évaluation plus approfondie.
Maintenant, je me demande quel serait le code de statut approprié pour l'application en disant que la demande a été acceptée mais qu'il y avait des choses qui ne pouvaient pas être faites.
Le problème serait évité s'il n'était pas autorisé à inclure les utilisateurs manquants dans la liste. Ensuite, la tentative d'envoi obtiendrait simplement une erreur 4xx. Mais il ne sert à rien de former l'API de cette façon. D'un autre côté, je pourrais considérer que la condition d'erreur est purement spécifique à l'application. Mais envoyer un 200 ne semble pas juste. Et ce serait bien de donner au client un indice pour examiner en profondeur la réponse d'erreur. par exemple pour éviter d'envoyer des messages à ces utilisateurs encore et encore
la source
J'ai eu le même problème et j'ai fini par utiliser deux solutions différentes:
202: Accepted
, indiquant que la requête était correcte, mais il n'y a aucune garantie que tout s'est réellement passé comme il se doit.200
dans la réponse, mais incluez une liste de ce qui ne s'est pas déroulé dans le corps de la réponse.Le second fonctionne généralement mieux, mais le premier est idéal si vous êtes paresseux ou utilisez une file d'attente pour le traitement.
la source
Qu'en est-il de l'utilisation du 206 Contenu partiel. Je sais que 206 concerne davantage les plages, mais que se passe-t-il s'il peut indiquer une demande partiellement réussie?
la source
Le protocole de transfert HyperText traite du côté transmission des choses. Il n'a pas de codes d'erreur pour traiter les erreurs au niveau de l'application.
Retourner 200 est la bonne chose à faire ici. En ce qui concerne HTTP, la demande a été reçue correctement, traitée correctement et vous renvoyez la réponse. Donc, au niveau HTTP, tout va bien. Toutes les erreurs ou avertissements liés à l'application exécutée sur http doivent figurer dans la réponse. Cela évitera également certains problèmes désagréables que vous pourriez rencontrer avec les serveurs proxy qui pourraient ne pas gérer certaines réponses comme vous le souhaitez.
la source