Códigos de estado REST HTTP para la validación fallida o el duplicado no válido
Estoy construyendo una aplicación con una API basada en REST y he llegado al punto de especificar códigos de estado para cada solicitud.
Qué código de estado debo enviar para las solicitudes que fallan la validación o cuando una solicitud está tratando de añadir un duplicado en mi base de datos?
He mirado en http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html pero ninguno parece correcto.
¿Existe una práctica común a la hora de enviar códigos de estado?
778
3
Para el fallo de validación de la entrada: 400 Bad Request + su descripción opcional. Esto se sugiere en el libro "RESTful Web Services". Por doble envío: 409 Conflicto
Actualización junio 2014
La especificación relevante solía ser RFC2616, que daba el uso de 400 (Bad Request) de forma bastante limitada como
Así que podría haberse argumentado que era inapropiado para los errores semánticos. Pero ya no; desde junio de 2014 el estándar correspondiente RFC 7231, que sustituye al anterior RFC2616, da el uso de 400 (Bad Request) de forma más amplia como
Definitivamente deberías dar una explicación más detallada en las cabeceras y/o cuerpo de la respuesta (por ejemplo, con una cabecera personalizada -
X-Status-Reason: Validation failed
).Recomiendo código de estado 422, "Entidad no procesable".