我了解如何使用 REST 进行一般实体交互 - 使用 url 名称映射到实体,使用 HTTP 动词映射到这些实体上的操作。但是,普遍接受的看待“动作”更像 RPC 的方式是什么?

例如,假设我想发送一个命令来重置设备?这里没有真正的“实体”,还是我做类似 POST 的事情 http://mydevice/device/reset?

有帮助吗?

解决方案

/device/reset 或者 /system/reset 还好。

REST“设计模式”确实鼓励您不要使用任何动词。你可以这样做:

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

相关信息:

其他提示

我不认为这是使用POST的情况。 “复位动作”是一个幂等操作(如果你调用了N次,你总是会得到相同的结果),所以恕我直言,你应该使用一个PUT调用,而不是POST(如POST不幂等)。

此外,如你是把一个资源,可以使用

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

 PUT http://system/status/reset

不过,我第一个想到的是“更舒适”,因为你是把一个资源,而第二个你刚才使用的URL。

我通常命名实体的“系统”或类似的东西。所以,你做“/系统/复位”。你选择的设备,这样也可以。

不过啊,我通常认为这些类型的行为是更新,这将使用POST方法。因此,我认为你是对张贴到/设备/重置

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top