【发布时间】:2010-03-15 14:13:13
【问题描述】:
我了解如何使用 REST 进行一般实体交互 - 使用 url 名称映射到实体,使用 HTTP 动词映射到这些实体上的操作。但是,人们普遍接受的看待“动作”更像 RPC 的方式是什么?
例如,假设我想发送命令让设备重置?这里没有真正的“实体”,还是我做一些类似 POST 到http://mydevice/device/reset?的事情
【问题讨论】:
标签: web-services rest restful-url
我了解如何使用 REST 进行一般实体交互 - 使用 url 名称映射到实体,使用 HTTP 动词映射到这些实体上的操作。但是,人们普遍接受的看待“动作”更像 RPC 的方式是什么?
例如,假设我想发送命令让设备重置?这里没有真正的“实体”,还是我做一些类似 POST 到http://mydevice/device/reset?的事情
【问题讨论】:
标签: web-services rest restful-url
/device/reset 或/system/reset 都可以。
REST“设计模式”确实鼓励你不要使用任何动词。你可以这样做:
POST http://mydevice/system/state
<stateType>RESET</stateType>
相关信息:
【讨论】:
我不认为这是使用 POST 的情况。 “RESET 动作”是一个幂等动作(如果你调用它 n 次,你总是会得到相同的结果),所以恕我直言,你应该使用 PUT 调用而不是 POST(因为 POST 不是幂等的)。
另外,当你在放置资源时,你可以使用
PUT http://system
<device>
<status>RESET</status>
</device>
或
PUT http://system/status/reset
但我认为第一个“更安静”,因为您正在放置资源,而第二个您只需使用 URL。
【讨论】:
我通常将实体命名为“系统”或类似的名称。所以你做“/system/reset”。您已经选择了设备,因此也可以使用。
但是是的,我通常认为这些类型的操作是更新,它会使用 POST 方法。所以我认为你是正确的 POST 到 /device/reset
【讨论】: