【发布时间】:2014-10-06 07:57:57
【问题描述】:
我的应用程序交易要求用户在使用该服务之前进行注册,并为此创建一个应用程序。界面初步规划如下...
POST /Users/Applications - 创建一个应用程序并返回一个唯一标识符。
GET /Users/Applications/{id} - 检索现有应用程序。
PUT /Users/Applications/{id} - 更新现有应用程序。
DELETE /Users/Applications/{id} - 删除现有应用程序。
这看起来非常干净和合乎逻辑,并且充分利用了 HTTP 动词。但是,如果我现在需要对应用程序执行其他操作,例如
ActivateApplication - 使用 PUT 将所有数据放入系统后,我现在希望用户激活他们的应用程序。这不仅仅是使用 PUT 更新应用程序状态的问题,还应该执行几项额外的工作来激活应用程序,例如向 HR 部门发送电子邮件。通知他们一个新的应用程序已经到了。
PrintApplication - 从客户端调用时,将应用程序打印到办公室打印机。 (不是一个理想的例子,但我敢肯定你明白了!)
我将如何构建我的 REST 接口来处理这种类型的请求?也许是这样的......
POST /Users/Applications/{id}/print
POST /Users/Applications/{id}/activate
...为了激活,我正在改变状态,所以我相信我需要使用 POST。我知道 REST 是关于文档的,但是当我需要对文档执行操作时,我如何构建我的 API,而不仅仅是获取和更新文档本身?
【问题讨论】:
-
对于激活,您是否考虑过向 /Users/Applications/{id} 发布更新的应用程序资源,例如 IsActivated 属性设置为 true?然后,您可能需要在属性更改时处理事件以触发发送电子邮件等流程。
标签: rest asp.net-web-api asp.net-web-api2