【发布时间】:2017-06-04 05:15:30
【问题描述】:
我的 REST API 上下文中的资源是用某种编程语言编写的应用程序代码。可以轻松映射到 HTTP 动词的 CRUD 操作是保存/编辑/删除代码。难以映射到 HTTP 方法的非 CRUD 操作是在服务器上部署代码、执行代码和取消部署。
我在 SO 中遇到的常见建议是:
- 重组动作,使其看起来像资源的一个字段,例如如果您的操作是激活引擎,请设计 URI:
PATCH engines/123,正文:{"status":"active"} - 将操作视为子资源,例如
PUT engines/123/active没有身体 - 使用查询参数,例如
PUT engines/123?activate=true - 务实并选择非 RESTful 的 RPC 样式 URL,例如
PUT engines/activate?id=123
我绝对无法按照 #1 和 #2 中的建议将 deploy/undeploy/execute 代码操作安装到资源中。您能否分享您的意见,我们如何才能最好地为这些操作设计 API?
【问题讨论】:
标签: rest