我有一个关于JSON Patch (RFC 6902)的解释的问题。
假设我有一个如下所示的资源:
{
"type": "assembly",
"uri": "http://example.com/campSrv/Assembly/18",
"name": "/sample",
"description": "Hello, World Application",
"created": "2013-03-27T16:15Z",
...
}这个资源的定义表明它可以有一个被定义为字符串数组的名为“tag”的值。但是,此资源当前没有标记,因此我的服务不会序列化不存在的数组。
现在假设我提交了以下HTTP补丁请求:
PATCH http://example.com/campSrv/Assembly/18 HTTP/1.1
Content-Type: application/json-patch
[
{ "op": "add", "path": "/tags/0", "value": "flobbit" }
]这是否应该创建'tags‘数组并添加'flobbit’作为第一个/唯一的元素,或者我的服务器应该返回一个错误?
发布于 2013-04-11 00:05:10
在我看来..。
您的补丁将导致错误,因为tags不存在,并且您不能添加到尚不存在的数组中。
..。
但是,对象本身或包含它的数组确实需要
存在,如果不是这样的话,仍然是一个错误。为
例如,以此文档开头的目标位置为"/a/b“的"add”:
{ "a":{ "foo":1}}
不是错误,因为"a“存在,并且"b”将被添加到它的
价值。这是本文档中的一个错误:
{ "q":{ "bar":2}}
因为"a“不存在。
但是,此修补程序将添加一个值为"flobbit"的tags字符串。
[
{ "op": "add", "path": "/tags", "value": "flobbit" }
]此补丁将添加第一个元素为"fobbit"的tags数组。
[
{ "op": "add", "path": "/tags", "value": ["flobbit"] }
]https://stackoverflow.com/questions/15930516
复制相似问题