REST-сервисы - разоблачение не связанных с данными «действий» - PullRequest
14 голосов
/ 15 марта 2010

Я понимаю, как использовать REST для выполнения общих взаимодействий с сущностями - использовать имена URL-адресов для сопоставления с сущностями и глаголы HTTP для сопоставления с действиями над этими сущностями. Но каков общепринятый взгляд на «действия», более похожий на RPC?

Например, допустим, я хочу отправить команду на сброс устройства? Здесь нет настоящей «сущности» или я делаю что-то вроде POST для http://mydevice/device/reset?

Ответы [ 3 ]

13 голосов
/ 15 марта 2010

/device/reset или /system/reset в порядке.

REST "шаблон дизайна" действительно поощряет вас НЕ использовать глаголы. Вы можете сделать:

POST http://mydevice/system/state    
<stateType>RESET</stateType>

Информация, связанная с данной:

9 голосов
/ 15 марта 2010

Я не думаю, что это так, чтобы использовать POST. «Действие RESET» является идемпотентным действием (если вы вызовете его n раз, вы всегда получите один и тот же результат), поэтому ИМХО вам следует использовать вызов PUT вместо POST (так как POST не идемпотентен).

Также, когда вы размещаете ресурс, вы можете использовать

PUT http://system
<device>
  <status>RESET</status>
</device>

или

 PUT http://system/status/reset

Но я думаю, что первый "более спокойный", поскольку вы размещаете ресурс, а второй - просто URL.

2 голосов
/ 15 марта 2010

Я обычно называю сущность "система" или что-то в этом роде. Итак, вы делаете «/ system / reset». Вы выбрали устройство, чтобы оно тоже работало.

Но да, я обычно рассматриваю эти типы действий как обновления, которые будут использовать метод POST Так что я думаю, что вы правы, чтобы отправить / устройство / сброс

...