Tenho um aplicativo que envia mensagens aos usuários. Em uma pós-solicitação, uma string XML é transferida e consiste em todos os usuários que devem receber aquela mensagem específica. Se algum dos usuários na lista não existir, eu devolvo a lista de usuários ausentes ao cliente para avaliação posterior.
Agora estou me perguntando qual seria o código de status adequado para o aplicativo, dizendo que o pedido foi aceito, mas havia coisas que não puderam ser feitas.
O problema seria evitado se não fosse permitido incluir usuários ausentes na lista. Então, a tentativa de envio obteria apenas um erro 4xx. Mas não adianta formar a API dessa forma. Por outro lado, eu poderia considerar a condição de erro puramente específica do aplicativo. Mas enviar 200 simplesmente não parece certo. E seria bom dar ao cliente uma dica de quando examinar profundamente a resposta ao erro. por exemplo, para evitar o envio de mensagens para esses usuários repetidamente
fonte
Eu tive o mesmo problema e acabei usando duas soluções diferentes:
202: Accepted
, indicando que a solicitação estava ok, mas não há garantia de que tudo realmente ocorreu como deveria.200
na resposta, mas inclua uma lista do que não deu certo no corpo da resposta.O segundo geralmente funciona melhor, mas o primeiro é ótimo se você for preguiçoso ou usar uma fila para processamento.
fonte
Que tal usar o 206 Partial Content. Eu sei que 206 é mais sobre intervalos, mas e se ele pudesse indicar uma solicitação parcialmente bem-sucedida?
fonte
O HyperText Transfer Protocol lida com o lado da transmissão das coisas. Não possui códigos de erro para lidar com erros no nível do aplicativo.
Devolver 200 é a coisa certa a fazer aqui. No que diz respeito ao HTTP, a solicitação foi recebida corretamente, tratada corretamente e você está enviando a resposta de volta. Portanto, no nível HTTP está tudo OK. Quaisquer erros ou avisos relacionados ao aplicativo que está sendo executado no http devem estar dentro da resposta. Isso também evitará alguns problemas desagradáveis que você pode encontrar com servidores proxy que podem não lidar com certas respostas da maneira que você espera.
fonte