Código de error HTTP de solicitud 400 BAD significado?

Tengo una petición JSON que estoy enviando a una URL HTTP.

¿Debe tratarse como 400 cuando el campo requestedResource existe pero `"Roman"es un valor no válido para este campo?

[{requestedResource:"Roman"}] 

¿Debe tratarse como "400" cuando el campo "blah" no existe?

[{blah:"Roman"}]

Un 400 significa que la solicitud estaba malformada. En otras palabras, el flujo de datos enviado por el cliente al servidor no seguía las reglas.

En el caso de una API REST con una carga útil JSON, los 400 se utilizan normalmente, y diría que correctamente, para indicar que el JSON no es válido de alguna manera según la especificación de la API para el servicio.

Según esa lógica, los dos escenarios que has proporcionado deberían ser 400's.

Imagina que, en cambio, se tratara de XML en lugar de JSON. En ambos casos, el XML nunca pasaría la validación del esquema, ya sea por un elemento indefinido o un valor de elemento incorrecto. Eso sería una mala petición. Lo mismo ocurre aquí.

Comentarios (6)

De w3.org

10.4.1 400 Petición incorrecta

La solicitud no pudo ser entendida por el servidor debido a una sintaxis malformada la sintaxis. El cliente NO DEBE repetir la solicitud sin modificaciones.

Comentarios (5)

Piensa en las expectativas.

Como aplicación cliente, esperas saber si algo va mal en el lado del servidor. Si el servidor necesita lanzar un error cuando falta blah o el valor de requestedResource es incorrecto entonces un error 400 sería apropiado.

Comentarios (0)