В какой ситуации клиент должен выбрать уникальный идентификатор ресурса для REST URI и в каком сервер должен его указать? - PullRequest
6 голосов
/ 09 июня 2011

Похоже, есть два способа сделать мой REST API.У меня могут быть пользователи, созданные с помощью POST без указания URI, и он создаст пользователя и вернет URI, ИЛИ Я могу создать пользователей с PUT и указать URI , сами .

* 1004.* Когда один должен быть использован поверх другого?Ключевое отличие здесь заключается в том, что в одном методе МОЯ система решает, каким должен быть уникальный идентификатор и, следовательно, URI для ресурса, в другой ситуации ОНИ указывают, каким он должен быть при создании.

Ответы [ 4 ]

2 голосов
/ 09 июня 2011

В основном все сводится к тому, готовы ли вы уступить контроль над именами ресурсов клиенту.

Самая большая проблема связана с конфликтами (если я PUT /photo.png, а вы PUT /photo.png, это нормально?).

Ответьте на эти вопросы, и вы уже в пути.

0 голосов
/ 09 июня 2011

Я могу создать пользователей с помощью POST без указания URI, и это будет создать пользователя и вернуть URI ИЛИ Я могу создать пользователей с PUT и указать сам URI .

Когда следует использовать над другой

Используйте первый.

В RESTful HTTP клиент должен никогда создавать URI. Служба должна быть хорошо подключена , что означает, что клиент должен только когда-либо следовать URI, указанным сервером, и делать запросы к этим URI.

Это создает лучшее разделение между клиентом и сервером и упрощает внесение изменений в службу, не нарушая существующих клиентов.

(И да, лотов существующих API-интерфейсов ошибаются)

Здесь действительно хороший пост Филдинга, связанный с этой темой:

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

0 голосов
/ 09 июня 2011

Ответ на этот вопрос зависит от двух более конкретных вопросов:

  • Знают ли клиенты местоположение ресурса, который будет создан? (Это может быть в том случае, если, например, пользователи получают доступ через имя пользователя, а не с помощью назначенного сервером идентификатора.)
  • У клиентов есть полное представление ресурса, который будет создан? (Это может быть , а не , если сервер вычисляет некоторую часть вашего ресурса.)

Если ответ на оба этих вопроса «да», то, вероятно, уместен PUT. Если вы ответили «нет» одному из них, вам следует придерживаться POST.

0 голосов
/ 09 июня 2011

Когда ваш пользователь указывает идентификатор ресурса, он может PUT к URI; идентификатор, для которого выполняется PUT, является спецификацией идентификатора ресурса.

Когда вы указываете идентификатор ресурса, они могут отправлять POST в URI родителя / группы; ваша система назначит URI для ресурса и вернет его клиенту, чтобы они могли ссылаться на созданный ресурс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...