JSON Patch 规范的解释

2024-02-21

我有一个关于 JSON Patch 的解释的问题(RFC 6902 https://www.rfc-editor.org/rfc/rfc6902).

假设我有一个如下所示的资源:

{
   "type": "assembly",
   "uri": "http://example.com/campSrv/Assembly/18",
   "name": "/sample",
   "description": "Hello, World Application",
   "created": "2013-03-27T16:15Z",
   ...
}

该资源的定义表明它可以有一个名为“tags”的值,该值被定义为字符串数组。但是,该资源当前没有标签,因此我的服务不会序列化不存在的数组。

现在假设我提交以下 HTTP PATCH 请求:

PATCH http://example.com/campSrv/Assembly/18 HTTP/1.1
Content-Type: application/json-patch

[
  { "op": "add", "path": "/tags/0", "value": "flobbit" }
]

这是否应该创建“tags”数组并将“flobbit”添加为第一个/唯一的元素,还是我的服务器应该返回错误?


以我的理解...

您的补丁将导致错误,因为tags不存在,并且不能添加到尚不存在的数组中。

RFC 6902 4.1 https://www.rfc-editor.org/rfc/rfc6902#section-4.1

...

但是,对象本身或包含它的数组确实需要
存在,如果情况并非如此,则仍然是一个错误。为了
例如,目标位置为“/a/b”的“add”以此开头 文档:

{ “a”: { “foo”: 1 } }

不是错误,因为“a”存在,并且“b”将添加到其
价值。这篇文档中有一个错误:

{ “q”:{ “酒吧”:2 } }

因为“a”不存在。

然而,这个补丁将添加一个tags值为"flobbit".

[
  { "op": "add", "path": "/tags", "value": "flobbit" }
]

并且这个补丁会添加tags数组,第一个元素是"fobbit".

[
  { "op": "add", "path": "/tags", "value": ["flobbit"] }
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON Patch 规范的解释 的相关文章

随机推荐