【问题标题】:PATCH's Add operation vs Replace operationPATCH 的 Add 操作 vs Replace 操作
【发布时间】:2016-06-04 16:11:12
【问题描述】:

假设我有一个资源 Resource1,其属性为 String attr1。 我想通过 PATCH 动词来支持 atrr1 的更新。

我知道在这种情况下,属性不是数组,添加和替换操作都会做同样的事情——替换属性的值。

那么在这种情况下,使用添加或替换来更新属性的正确方法是什么?有哪些考虑?

在我的工作中,他们决定使用添加操作,我正在尝试确定这是否是正确的决定。

【问题讨论】:

  • 取决于PATCH请求的媒体类型;你想用哪一个?
  • 媒体类型是 application/json ,但我没有看到与媒体类型的连接。在这两种情况下,您都可以使用添加和替换,但问题是在这种情况下正确的方法是什么?
  • PATCH 的语义取决于负载的媒体类型。对于 application/json,AFAIK,没有定义的语义,所以它不应该与 PATCH 一起使用(至少如果你对互操作感兴趣)。有关已指定用于 PATCH 的媒体类型,请参阅 RFC 6902 和 RFC 7396。
  • 当您说“application/json”时,您指的是随 PATCH 请求发送的内容,还是正在修补的资源?
  • 没关系。只需使用定义 PATCH 语义的媒体类型作为有效负载,例如 RFC 6902 或 7396 中定义的那些。

标签: http httpverbs


【解决方案1】:

HTTP PATCH 操作的语义主要取决于负载中使用的媒体类型。 PATCH 操作不应该对没有定义补丁语义的负载进行,例如 application/json(参见https://www.rfc-editor.org/errata_search.php?rfc=5789&eid=3169)。

据我所知,目前为 JSON 定义了两种补丁格式;它们的规范在 RFC 6902 和 7396 中。

【讨论】:

    猜你喜欢
    • 2014-09-22
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    相关资源
    最近更新 更多