2015-05-04 1 views
2

я должен определить API, который отвечает, может ли быть создан ресурс с указанным идентификатором, какКак определить логический API RESTful?

Могу ли я (абонент) создать этот ресурс с идентификатором = resource1?

возможные ответы могут быть

  • 401 - Вызывающий абонент не прошел проверку подлинности
  • 403 - Вызывающий проверку подлинности, но не уполномочен выполнять эту проверку
  • 200 - Да, вы можете создать ресурс с идентификатором = resource1
  • ...

N ow мои вопросы:

  1. Как я могу моделировать API? Будет ли, GET /resources/resource1 быть хорошим выбором?

  2. Каковы будут коды HTTP для ответов, например (a) этот идентификатор ресурса уже сделан, (b) у вас нет разрешения на создание этого идентификатора (но только несколько других идентификаторов), (c) вы можете создать этот идентификатор.

ответ

1

было бы лучше просто попробовать и создать ресурс с POST? и пусть ваша реализация обрабатывает ответ оттуда? В этом случае ваши ответы могут быть:

а) 409: Конфликт
б) 401: Несанкционированный
с) 200: OK

Если это не представляется возможным, то я думаю, ваш ответ полезной нагрузки от GET может содержать результат. Что-то же просто, как:

правда: Вы можете создать ресурс
ложь: Вы не можете создать ресурс

2

Пример в GitHub может помочь вам.

АНЯ предназначена для проверки, если пользователь следит за другой пользователь:

GET /user/following/:username

Информация сделки представлена ​​в github's api document

Для вашего Question1, я думаю, что вы можете реализовать так:

GET /resource/existence/:resource_id

Для вопроса2 вы можете также обратите внимание на github's client errors

0

Поскольку вы хотите проверить разрешения на добавление, вы должны использовать другой ресурс, чем тот, который фактически добавил элемент. ИМО-то вроде /permissions/{elementName}?id=theid или /permissions/{elementName}/{operationName}?id=theid. Доступ к нему с помощью метода GET подойдет.

Используя тот же ресурс будет немного «грязный» Я думаю, что, так как я ожидал бы метод GET на /resources/resource1 фактически возвращает содержимое элемента с идентификатором ressource1.

Что касается ответа, я хотел бы видеть это:

  • 401, если пользователь не аутентификации и ресурс разрешения требует проверки подлинности.
  • 204, если текущему пользователю разрешено добавлять элемент с указанным идентификатором. Я не думаю, что в этом случае вам нужна полезная нагрузка.
  • Что касается случая, когда пользователю не разрешено добавлять элемент с предоставленным идентификатором, я думаю, что код состояния 403 (Forbidden) подходит. Возможно, код состояния 400 также может совпадать, если вы считаете, что пользователь предоставляет неправильный контент. В этом случае некоторые подсказки об ошибке (недопустимое значение идентификатора) должны быть возвращены в пределах полезной нагрузки ответа.

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

Надеюсь, он вам порекомендует, Thierry