¿Qué código de estado debo usar para validaciones fallidas o duplicados no válidos?

Resuelto alexn asked hace 14 años • 10 respuestas

Estoy creando una aplicación con una API basada en REST y he llegado al punto en el que especifico códigos de estado para cada solicitud.

¿Qué código de estado debo enviar para solicitudes que no superan la validación o cuando una solicitud intenta agregar un duplicado en mi base de datos?

Revisé http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html pero ninguno parece correcto.

¿Existe una práctica común al enviar códigos de estado?

alexn avatar Jul 20 '10 20:07 alexn
Aceptado

Por error de validación de entrada: 400 Solicitud incorrecta + su descripción opcional. Esto se sugiere en el libro " RESTful Web Services ". Para envío doble: Conflicto 409


Actualización junio 2014

La especificación relevante solía ser RFC2616 , que daba el uso de 400 (Solicitud incorrecta) de manera bastante limitada.

El servidor no pudo entender la solicitud debido a una sintaxis incorrecta

Por tanto, se podría haber argumentado que era inadecuado para los errores semánticos. Pero ya no más; Desde junio de 2014, el estándar relevante RFC 7231 , que reemplaza al anterior RFC2616, otorga el uso de 400 (Bad Request) de manera más amplia como

el servidor no puede o no quiere procesar la solicitud debido a algo que se percibe como un error del cliente

deamon avatar Jul 20 '2010 13:07 deamon
  • Validación fallida: 403 Prohibido ("El servidor entendió la solicitud, pero se niega a cumplirla"). Contrariamente a la opinión popular, RFC2616 no dice "403 sólo está destinado a una autenticación fallida", sino "403: sé lo que quieres, pero no lo haré". Esa condición puede deberse o no a la autenticación.
  • Intentando agregar un duplicado: Conflicto 409 ("La solicitud no se pudo completar debido a un conflicto con el estado actual del recurso").

Definitivamente deberías dar una explicación más detallada en los encabezados y/o el cuerpo de la respuesta (por ejemplo, con un encabezado personalizado X-Status-Reason: Validation failed).

Piskvor left the building avatar Jul 20 '2010 13:07 Piskvor left the building