para pagina httpstatuscode example estado codigos code api http rest http-status-codes

api - pagina - ¿Cuál es el código de respuesta HTTP adecuado para la solicitud sin campos obligatorios?



httpstatuscode (2)

Considere el caso simple donde el usuario está eliminando una publicación. Esta es una solicitud HTTP DELETE / POST simple con un campo obligatorio, post_id.

¿Qué debe hacer el servidor si no se proporciona post_id?

Aparentemente, el usuario nunca debería encontrar este comportamiento, así que seamos puristas.

Mi primera toma sería 400 mal pedido, pero las especificaciones dicen

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

y yo diría que el campo faltante está bien en sintaxis / http POV, es un requisito semántico específico del dominio de la aplicación.

200 Aceptar con explicaciones es malo, 500 se siente raro ya que esto es un problema de solicitud.

¿Pensamientos?


400 es la respuesta correcta.

400 no está restringido a una sintaxis con formato incorrecto desde un punto de vista HTTP. Falta un argumento obligatorio es un error en la sintaxis definida por la aplicación y, por lo tanto, una "Solicitud incorrecta"

EDITAR

Al principio, parece extraño que no haya un código de retorno separado para esto, pero los códigos de retorno están diseñados para diferenciar en qué acciones debe realizar el cliente. Un código de error 400 significa que el cliente debe cambiar los datos de la POST o la cadena de consulta al formato definido por la aplicación. Por lo tanto es apropiado para este caso.


En un escenario REST, el recurso que se va a eliminar debe ser identificado por la URL, por lo que el ID del recurso debe ser parte de esa URL para poder identificarla correctamente. Una vez que esa suposición es correcta, entonces la URL está identificando un recurso diferente para la eliminación fr, o no lo es (lo que daría un 404)

Sin embargo, en el caso general de un parámetro faltante, a menudo uso un error 403 Prohibido. El razonamiento es que se entendió la solicitud, pero no voy a hacer lo que se me pide (porque las cosas están mal). La entidad de respuesta explica qué es incorrecto, por lo que si la respuesta es una página HTML, los mensajes de error están en la página. Si es una respuesta JSON o XML, la información del error está allí.

Desde rfc2616 :

10.4.4 403 Prohibido

El servidor entendió la solicitud, pero se niega a cumplirla.
La autorización no ayudará y la solicitud NO DEBE repetirse.
Si el método de solicitud no era HEAD y el servidor desea hacer
Por qué no se ha cumplido la solicitud, debe describir la razón de la negativa en la entidad. Si el servidor no desea que esta información esté disponible para el cliente, el código de estado 404
(No encontrado) se puede utilizar en su lugar.