【发布时间】:2014-03-15 09:54:04
【问题描述】:
这是一个通用的 RESTful API 设计问题。我们正在尝试用最常见的方法解决以下情况。
我们有一个资源,比如说:/licenses/5123 资源有一个过期日期,需要更新为过期状态。当然,最简单的做法是只公开 expire_date 并让客户端将其设置为新日期,但这是不希望的。 为了更新资源,我们使用 PUT 方法并希望指定更新的类型。换句话说,更新操作是“过期”还是“扩展”或“随便”。
我考虑了几个选项:
- 实现自定义 http 方法 - 但我不喜欢将 HTTP 协议扩展至超出其标准的范围
- 添加action url参数并指定值:PUT /licenses/5123?action=expire
- 由于 JSON 格式的请求正文中还有其他参数,因此将操作参数添加到 JSON 请求中。
- 为更新类型实现自定义 http 标头
请分享您的意见和/或提供对可能描述此类案例的在线资源的任何引用。我无法想象这是一个独特的案例。
非常感谢!
【问题讨论】:
-
“子资源”呢?您可以发送
true和PUT /licenses/5123/expire。 -
有趣的想法但是过期是一个动词,应该避免。
-
好吧,随便命名子资源(
expiration_date或expired)。
标签: json web-services rest asp.net-web-api