Código de erro HTTP de pedido 400 BAD?

Eu tenho um pedido JSON que eu'm postar para um URL HTTP.

Deve ser tratado como 400 onde o campo requestedResource existe mas "Roman"é um valor inválido para este campo?

[{requestedResource:"Roman"}] 

Isto deve ser tratado como 400 onde "blah"campo não'não existe de todo?

[{blah:"Roman"}]

Um 400 significa que o pedido foi malformado. Em outras palavras, o fluxo de dados enviado pelo cliente para o servidor não't segue as regras.

No caso de uma API REST com uma carga útil JSON, 400's são normalmente, e corretamente eu diria, usados para indicar que o JSON é inválido de alguma forma de acordo com a especificação da API para o serviço.

Por essa lógica, os dois cenários que você forneceu devem ser 400's.

Imagine, em vez disso, que isto fosse XML e não JSON. Em ambos os casos, o XML nunca passaria na validação do esquema - seja por causa de um elemento indefinido ou por um valor impróprio do elemento. Isso seria um mau pedido. O mesmo acordo aqui.

Comentários (6)

A partir de w3.org

10.4.1 400 Bad Request

O pedido não pôde ser compreendido pelo servidor devido a malformação sintaxe. O cliente NÃO DEVERÁ repetir o pedido sem modificações.

Comentários (5)

Pense nas expectativas.

Como um aplicativo cliente, você espera saber se algo dá errado no lado do servidor. Se o servidor precisar lançar um erro quando blah' estiver faltando ou o valorrequestedResource' estiver incorreto, um erro de 400 seria apropriado.

Comentários (0)