假设您有一个管理长时间运行(自动)流程的服务。流程可以开始、暂停、恢复或取消。例如,考虑视频转换或 3D 打印。所有以前运行和当前运行的进程的列表始终可用。
我正在尝试将此概念映射到 REST 并遇到一些问题。
Start 可能会映射到POST /processes
,但感觉很奇怪。开始不是创建,并且POST
对于某些集合意味着创建项目,而为其他集合启动过程听起来令人困惑。但这部分不太重要。
暂停、恢复和取消是我绊倒的地方。我可能会认为它是PATCH
——但是 RESTful 和 RPC 方法之间有什么区别呢?
然而,对于 PATCH,封闭的实体包含一组指令,描述如何修改当前驻留在源服务器上的资源以生成新版本。
如果指令指定状态应该设置为暂停,这似乎破坏了封装并且感觉随意——暂停可能影响的不仅仅是状态(任何内部任务等)。
如果指令是字面上的pause
——这更好,但是如果所有客户端都必须知道这些特定消息,那么与 RPC 相比有什么好处?