2010-02-03 12 views
11

¿Cuál es el código de respuesta más apropiada para volver cuando se utiliza el método PUT para actualizar un recurso y la solicitud contiene algunos datos que invalidaría las reglas de dominio?lo http código de respuesta para el servicio en el resto método put cuando las reglas de dominio no válido

Por ejemplo, un recurso del cliente debe tener un nombre especificado. Si un agente intenta emitir un PUT sin necesidad de suministrar un nombre No quiero actualizar el recurso, y yo quiero decir a la persona que llama que tienen que proporcionar un nombre.

¿Qué código de respuesta HTTP?

Respuesta

3

El código de respuesta no está relacionado con el método http en este caso. Debería devolver el mismo código de estado como si hubiera sido una solicitud POST. Yo diría que se debe utilizar 400 o 409 (Nota: Véase la discusión de la diferencia entre los dos en los comentarios).

+0

en realidad tenía 409 - Conflicto escrito. Aunque, mirando a http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html menos de 400 - Solicitud incorrecta "La solicitud no pudo ser entendido por el servidor debido a su sintaxis incorrecta.". Si puede verificar las reglas comerciales de una solicitud y saber que no son válidas, entonces seguramente no se trata de una sintaxis mal formada. Yo voto 409. Mientras –

+0

'409' es probablemente la más correcta, las respuestas' X00' puede también ser visto como la respuesta genérica dentro de una categoría. Entonces '400' es menos específico que' 409'. No es cómo se definen, pero de facto esa es a menudo la interpretación. – troelskn

+0

500 definitivamente no es la respuesta correcta en este caso, ya que es el cliente que cometió el error, no el servidor. 409 se usa para conflictos de concurrencia, no para infracciones de reglas. –

4

volvería un 400. Estrictamente, esto es para "sintaxis mal formada" (datos no inválidos), pero en la práctica el YouTube, Twitter, etc. lo usa para solicitudes más generales "malas".

+0

Creo que esta respuesta ahora también se acepta como la respuesta correcta para datos no válidos. –

+0

Sí, ese fue mi punto al citar esas API. –

25

¿Qué le parece 422? El código de estado 422 (Entidad no procesable) significa que el servidor entiende el tipo de contenido de la entidad de solicitud (por lo tanto, un código de estado 415 (Tipo de medio no admitido) es inapropiado), y la sintaxis de la entidad de solicitud es correcta (por lo tanto, un código de estado 400 (Solicitud incorrecta) es inadecuado) pero no pudo procesar las instrucciones contenidas. Por ejemplo, esta condición de error puede ocurrir si un cuerpo de solicitud XML contiene instrucciones XML bien formadas (es decir, sintácticamente correctas) pero semánticamente erróneas "

RFC 4918, Section 11.2

+0

Suena prometedor.No había visto ese código, no aparece en la mayoría de la documentación. –

+1

Eso es parte de WebDav,/no/estándar HTTP. –

+2

Mateo, ese comentario no tiene sentido. Hay una razón por la cual los códigos de estado en HTTP son extensibles y por qué hay un registro de IANA. –

Cuestiones relacionadas