json - RESTful API 设计,更新资源时区分 PUT 操作

标签 json web-services rest asp.net-web-api

这是一个通用的 RESTful API 设计问题。我们正在尝试用最常见的方法解决以下案例。

我们有一个资源,比如说:/licenses/5123 该资源具有到期日期,需要将其更新为到期状态。当然,最简单的方法是公开点过期日期并让客户端将其设置为新日期,但这不是我们所希望的。 为了更新资源,我们使用 PUT 方法,并希望指定更新的类型。换句话说,更新操作是“过期”还是“延长”还是“无论什么”。

我考虑了几个选择:

  1. 实现自定义 http 方法 - 但我不喜欢将 HTTP 协议(protocol)扩展到其标准之外
  2. 添加操作 URL 参数并指定值:PUT/licenses/5123?action=expire
  3. 由于 JSON 格式的请求正文中还有其他参数,因此请在 JSON 请求中添加操作参数。
  4. 为更新类型实现自定义 http header

请分享您的意见和/或提供可能描述此类案例的任何在线资源引用。我无法想象这是一个独特的案例。

非常感谢!

最佳答案

通常首选选项 2 和 3。没有真正需要使用 HTTP 操作或自定义 header 进行自定义操作。

PUT 是更新许可证的合理操作方法,如您所描述的。将更新的详细信息放入 JSON 请求正文听起来很合理(选项 3),这就是我要做的。

关于json - RESTful API 设计,更新资源时区分 PUT 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418530/

相关文章:

java - 没有数据库时使用 ADF 模型层的好处

.net - 如何从 Delphi Win32 应用程序访问 .Net Web 服务?

c# - 找不到类型或命名空间 'frombody'

validation - `POST` 验证失败的示例内容类型?

json - Swift - 无法使用泛型转换类型的值

javascript - jquery 中 $.each 的问题

php - 使用 .net 和 nusoap 的 Web 服务

java - 如何进行 Rest API 调用以在 Java 中启动可执行文件

javascript - Ember 数据帮助!无法将 JSON 反序列化为模型

json - JSON POST 请求中的参数在 Swift 中被忽略了吗?