【发布时间】:2012-03-28 15:34:13
【问题描述】:
我已经看到了大量关于如何为基本 CRUD 操作构建 URL 的示例,但在谈论更多类似命令的操作或应用程序服务调用时却很少看到。
例如,假设在我的应用程序服务中,我有一个类似 RemoveOldOrders(int customerId) 的调用,它会从系统中删除任何具有 2 年历史的 ID 为“customerId”的客户的订单。 URL 在我的 restful 服务上会是什么样子?调用的有效负载是什么样的?我会使用什么 HTTP 方法(POST?)?
我的想法是它会是这样的:
/Customer/1/RemoveOldOrders 作为 POST,正文为空(因为 customerID 来自 url)。
是否有关于此类事情的良好指导方针?
更新:我觉得我需要澄清一下我的问题,而不是关于可能重复的帖子的评论(是的,该帖子本质上是在问同样的事情,但我真的不觉得这个问题得到了很好的回答) .
如果我想对资源执行操作但该操作不适合标准 HTTP 动词怎么办?
另一个例子:我的应用程序连接到 ESB,需要有一种方法来强制将我的资源投影到 ESB 上进行处理?在我当前基于 SOAP 的 Web 服务中,我有一个类似的方法:
ExportCustomer(int customerId)
现在,对于 RESTful 服务,我如何在 uri 中表示此操作? Brian Kelly 的回答中的选项 1 似乎是最合乎逻辑的,例如:
POST http://someapp/api/customer/1/export
或者会:
POST http://someapi/api/customer/export/1
变得更好?
【问题讨论】:
标签: rest