Какой правильный код статуса ответа на запрос REST POST при обнаружении дубликата? - PullRequest
18 голосов
/ 23 февраля 2012

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

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

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

и, в общем, кажется, что 409 больше связано с PUT.

Каков правильный ответ в этом случае?Может быть 303 См. Заголовок «Другое» и «Расположение»?

1 Ответ

15 голосов
/ 23 февраля 2012

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

...