这是一个通用的 RESTful API 设计问题。我们正在尝试用最常见的方法解决以下案例。
我们有一个资源,比如说:/licenses/5123 该资源具有到期日期,需要将其更新为到期状态。当然,最简单的方法是公开点过期日期并让客户端将其设置为新日期,但这不是我们所希望的。 为了更新资源,我们使用 PUT 方法,并希望指定更新的类型。换句话说,更新操作是“过期”还是“延长”还是“无论什么”。
我考虑了几个选择:
- 实现自定义 http 方法 - 但我不喜欢将 HTTP 协议(protocol)扩展到其标准之外
- 添加操作 URL 参数并指定值:PUT/licenses/5123?action=expire
- 由于 JSON 格式的请求正文中还有其他参数,因此请在 JSON 请求中添加操作参数。
- 为更新类型实现自定义 http header
请分享您的意见和/或提供可能描述此类案例的任何在线资源引用。我无法想象这是一个独特的案例。
非常感谢!
最佳答案
通常首选选项 2 和 3。没有真正需要使用 HTTP 操作或自定义 header 进行自定义操作。
PUT 是更新许可证的合理操作方法,如您所描述的。将更新的详细信息放入 JSON 请求正文听起来很合理(选项 3),这就是我要做的。
关于json - RESTful API 设计,更新资源时区分 PUT 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418530/