De acordo com o cenário abaixo,
Digamos que alguém faça uma solicitação ao seu servidor com dados no formato correto, mas que simplesmente não são dados "bons". Por exemplo, imagine que alguém postou um valor String em um ponto de extremidade da API que esperava um valor String; mas o valor da sequência continha dados que estavam na lista negra (por exemplo, impedindo as pessoas de usarem "senha" como senha). então o código de status pode ser 400 ou 422?
Até agora, eu teria retornado um "400 Bad Request", que, de acordo com o w3.org, significa:
A solicitação não pôde ser entendida pelo servidor devido à sintaxe incorreta. O cliente não deve repetir o pedido sem modificações.
Esta descrição não se encaixa bem na circunstância; mas, se você seguir a lista dos principais códigos de status HTTP definidos no protocolo HTTP / 1.1, provavelmente é sua melhor aposta.
Recentemente, no entanto, alguém da minha equipe de desenvolvimento apontou [para mim] que as APIs populares estão começando a usar extensões HTTP para ficar mais detalhadas com seus relatórios de erros. Especificamente, muitas APIs, como o Twitter e o Recurly, estão usando o código de status "422 Unprocessable Entity", conforme definido na extensão HTTP do WebDAV. O código de status HTTP 422 declara:
O código de status 422 (Entidade não processável) significa que o servidor entende o tipo de conteúdo da entidade solicitada (portanto, um código de status 415 (Tipo de mídia não suportado) é inapropriado) e a sintaxe da entidade solicitada está correta (portanto, 400 (Solicitação incorreta) ) código de status é inapropriado), mas não conseguiu processar as instruções contidas. Por exemplo, essa condição de erro pode ocorrer se um corpo de solicitação XML contiver instruções XML bem formadas (ou seja, sintaticamente corretas), mas semanticamente erradas.
Voltando ao nosso exemplo de senha acima, esse código de status 422 parece muito mais apropriado. O servidor entende o que você está tentando fazer; e entende os dados que você está enviando; simplesmente não permite que esses dados sejam processados.