2012-02-23 22 views
17

En mi RESTful API el cliente puede intentar publicar información que ya está en la base de datos, esto no es un error, algo que el cliente puede ignorar, tal vez notificar al usuario sobre una duplicación ya existente.¿Cuál es el código de estado de respuesta correcto para la solicitud REST POST cuando se encuentra duplicado?

Ahora devolveré 409 Conflicto y un objeto ya existente en el cuerpo de respuesta. Siento que es incorrecto porque:

No se pudo completar la solicitud debido a un conflicto con el estado actual del recurso. Este código solo está permitido en situaciones en las que se espera que el usuario pueda resolver el conflicto y vuelva a enviar la solicitud. El cuerpo de respuesta DEBE incluir suficiente información para que el usuario reconozca el origen del conflicto. Lo ideal sería que la entidad de respuesta incluyera suficiente información para el usuario o agente de usuario para solucionar el problema; sin embargo, es posible que no sea y no es necesario. via restpatterns.org

y, en general, parece que 409 se asocia más con PUT.

¿Cuál es la respuesta correcta en este caso? ¿Podría ser 303 Ver el encabezado Otro y Ubicación?

Respuesta

14

No estoy seguro de que haya una respuesta correcta. Estamos devolviendo un 409 con un mensaje que es un recurso duplicado. También incluimos hipermedios a ese recurso. Parece que también puedes usar un 400 - Mal pedido, pero parece demasiado genérico. Pude ver que el 303 también funcionaba. Quería indicar que hubo un error, así que fuimos con el 409.

Cuestiones relacionadas