Каков правильный код состояния HTTP для ответа на операцию «Создать» на ресурсе с OneToMany - PullRequest
1 голос
/ 26 января 2012

У меня есть простой пример использования: у пользователя есть набор привилегий;когда я создаю ресурс пользователя, я не хочу также создавать привилегии;поэтому, если новый пользователь с новыми привилегиями приходит от клиента, я хочу ответить чем-то вроде:

Я не могу создать ресурс пользователя, потому что содержащиеся в нем привилегии не существуют.

На этом этапе клиент может сначала создать Create on the Privilege, а затем добавить их в User и создать его.

Вопрос Какой код состояния ошибки использовать для ответа HTTP:

  • 412 - Сбой предварительного условия
  • 424 - Зависимая ошибка

Я также рассмотрел (но, похоже, не подходит к сценарию использования):

  • 400 - Плохой запрос
  • 422 - Необработанный объект

Ответы [ 2 ]

1 голос
/ 26 января 2012

409 звучит хорошо; клиент может сделать отдельный запрос для разрешения конфликта, в этом случае операция была бы успешной. (Вы можете использовать ссылку с пользовательским отношением ссылки для определения ресурса, с которым конфликтовала операция)

0 голосов
/ 26 января 2012

422 и 424 имеют особое значение WebDAV.Таким образом, они не применяются.

412 соответствует предварительному запросу клиента .Так что это тоже не относится.

Возможно, можно использовать конфликт 409.

Редактировать: 409 Конфликт связан с тем, что клиент запрашивает у сервера ресурсы сервера.в невозможное или противоречивое состояние.Поэтому я думаю, что это относится к вашей ситуации.Пока ссылочные привилегии не существуют на клиенте, пользователь, ссылающийся на них, не может быть создан.

Редактировать: Взгляните на http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

...