REST Architecture - Как будет выглядеть URL сложного метода? - PullRequest
0 голосов
/ 25 ноября 2010

У меня есть следующий URL, который возвращает мне список ресурсов:

http://example.com/resources/

Я также реализовал метод, который возвращает конкретный ресурс (в данном случае, ресурс 142).

http://example.com/resources/142

Я хотел бы добавить метод, который находится за пределами типичного метода HTTP: Список, Создать, Получить, Заменить, Обновить.Какой шаблон следовать?В моем конкретном случае мне нужно проверить доступность ресурса.Как бы выглядел URL-адрес (http://example.com/resources/checkavailability/142)?

Я думал об использовании метода GET и извлечении этой информации как части возвращаемого объекта. Однако некоторые из моих коллег утверждают, что это будет неэффективно (данные для передачибыло бы намного больше, чем просто возвращение true / false).

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

Нет необходимости в ресурсе для проверки доступности другого ресурса, и нет необходимости в запросе GET, запроса HEAD должно быть достаточно, это аналогично запросу GET, нобез переноса тела.Затем вы можете посмотреть коды возврата и определить, доступен ли ресурс.Это при условии, что вы правильно внедрили коды возврата.

1 голос
/ 26 ноября 2010

Restful over HTTP дает вам единый интерфейс, вам часто не нужно кодировать действия внутри вашего URL

Относительно вашей упомянутой / проверяемой доступности с использованием GET, возвращающей неэффективность полезной нагрузки, является уважительной причиной, поэтому используйте HEAD (она возвращает только заголовки ответа).

request:
HEAD /resources/123

response status:
404 Not Found: equals to /checkavailability == false
200 OK: equals to /checkavailability == true

Другие предложения по замене интерфейса:

  • / resources / list: GET / resources
  • / resources / replace / 123: PUT / resources / 123
  • / resources / update / 123: PUT / resources / 123
  • / resources / create: POST / resources
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...