Сервисы REST - представление неданных “действия”

Я понимаю, как использовать REST для того, чтобы сделать общие взаимодействия объекта - использование имен URL для отображения на объекты и глаголы HTTP для отображения на действия с теми объектами. Но каков общепринятый способ посмотреть на "действия" больше как RPC?

Например, скажем, я хочу отправить команду за устройством для сброса? Нет никакого реального "объекта" здесь, или сделайте я делаю что-то как POST к http://mydevice/device/reset?

14
задан Marcus Leon 15 March 2010 в 14:39
поделиться

3 ответа

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

«Шаблон проектирования» REST не побуждает вас НЕ использовать какие-либо глаголы .. Вы можете:

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

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

13
ответ дан 1 December 2019 в 12:13
поделиться

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

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

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

или

 PUT http://system/status/reset

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

9
ответ дан 1 December 2019 в 12:13
поделиться

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

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

2
ответ дан 1 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: