【发布时间】:2016-10-22 01:58:27
【问题描述】:
我正在使用 ASP.NET Web API 为 DVD 租赁网站实现 RESTful API。域模型(简化)由Customer 和Subscription 实体组成。客户有关联的订阅。
API 公开的大部分操作都是简单的 CRUD 操作,它们很容易根据 RESTful 原则进行建模。例如。
GET /api/subscriptions/1 - get subscription with id 1
POST /api/subscriptions - add a new subscription
PUT /api/customers/2 - update customer with id 2 with contents of PUT body
需要定期检查过期订阅,方法是将我们数据库中读取的每个 Subscription 实体上的 EndDate 字段与当前日期进行比较。对于每个已过期的订阅,关联客户的CustomerStatus 字段应设置为已存档,并向客户发送电子邮件。该操作将通过我们的 REST API 公开,并每天从外部服务调用。
根据 RESTful 原则,我应该使用什么 URL 方案来公开此操作?我的第一个想法是它是对api/customers/{SomeResource} 的 PUT 操作,因为它可能涉及更新零个或多个客户的 CustomerStatus 字段,并且也是一个幂等操作。
例如:
PUT /api/customers/expired
这听起来合理吗?
请注意,此请求中没有发送正文,因为正在更新其状态的客户是从数据库中查询的,而不是由最终用户提供的。我的理解是 PUT 请求不必包含正文。
【问题讨论】:
-
不 PUT 通常表示添加记录,POST 将是更新。
-
@Kevin -- 不,比这更复杂。
标签: c# rest asp.net-web-api restful-url