【发布时间】: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 中定义的那些。