Какой правильный код состояния ответа на запрос REST POST при обнаружении дубликата?

В моем клиенте API RESTful может попытаться опубликовать информацию, которая уже находится в базе данных, это не ошибка, а то, что клиент может игнорировать, возможно, уведомить пользователя об уже существующем дубликате.

Теперь я возвращаю 409 Conflict и уже существующий объект в теле ответа. Я считаю, что это неправильно, потому что:

Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса. Этот код разрешен только в ситуациях, когда ожидается, что пользователь сможет разрешить конфликт и повторно отправить запрос. Тело ответа ДОЛЖНО включать достаточно информации, чтобы пользователь мог распознать источник конфликта. В идеале объект ответа должен содержать достаточно информации, чтобы пользователь или пользовательский агент могли решить проблему; однако это может быть невозможно и не требуется. через restpatterns.org

и вообще кажется, что 409 больше ассоциируется с PUT.

Каков правильный ответ в этом случае? Может ли это быть заголовок 303 See Other and Location?


person miceuz    schedule 23.02.2012    source источник


Ответы (1)


Я не уверен, что есть правильный ответ. Мы возвращаем ошибку 409 с сообщением о том, что это дублированный ресурс. Мы также включаем гипермедиа в этот ресурс. Кажется, вы также можете использовать 400 - Bad Request, но это кажется слишком общим. Я мог видеть, что 303 также работает. Я хотел указать, что произошла ошибка, поэтому мы выбрали 409.

person suing    schedule 23.02.2012