如何使用 json 补丁更新集合
How to update a collection using json patch
在使用JSON 补丁更新集合的过程中找不到示例。事实上,我想在集合 REST 资源上使用方法 PATCH
来更新关联的集合,而无需再次发送整个集合。不知道JSON Patch 能不能匹配描述要做的操作:主要是添加元素或者删除元素。元素是复杂的,这意味着它们不是原始元素。
下面有更多详细信息。让我们以资源 contacts
:
为例
GET /contacts
[
{
"id": "1",
"lastName": "Last name 1",
"firstName": "First name 1"
},
{
"id": "2",
"lastName": "Last name 2",
"firstName": "First name 2"
},
{
"id": "3",
"lastName": "Last name 3",
"firstName": "First name 3"
},
(...)
]
这是我想使用的 PATCH
请求,但我不确定它是否符合 JSON 补丁:
PATCH /contacts
[
{
"op": "add", "value": {
"firstName": "my first name",
"lastName": "my last name"
}
},
{
"op": "remove", "path": "id=='1'"
}
]
我的主要问题是如何根据字段 id
识别要删除的元素。有专门的表达方式吗?我想到了类似的东西:id=='1'
.
最后一个问题:JSON补丁针对的是响应内容吗?
非常感谢您的帮助!
蒂埃里
您应该能够简单地使用要删除的资源的路径。
PATCH /contacts
[
{
"op": "add",
"path": "/-",
"value": {
"firstName": "my first name",
"lastName": "my last name"
}
},
{
"op": "remove",
"path": "/0"
}
]
环顾四周,似乎对此有些困惑,但是 standard says““删除”操作删除了目标位置的值”,例如:
{ "op": "remove", "path": "/a/b/c" }
在使用JSON 补丁更新集合的过程中找不到示例。事实上,我想在集合 REST 资源上使用方法 PATCH
来更新关联的集合,而无需再次发送整个集合。不知道JSON Patch 能不能匹配描述要做的操作:主要是添加元素或者删除元素。元素是复杂的,这意味着它们不是原始元素。
下面有更多详细信息。让我们以资源 contacts
:
GET /contacts
[
{
"id": "1",
"lastName": "Last name 1",
"firstName": "First name 1"
},
{
"id": "2",
"lastName": "Last name 2",
"firstName": "First name 2"
},
{
"id": "3",
"lastName": "Last name 3",
"firstName": "First name 3"
},
(...)
]
这是我想使用的 PATCH
请求,但我不确定它是否符合 JSON 补丁:
PATCH /contacts
[
{
"op": "add", "value": {
"firstName": "my first name",
"lastName": "my last name"
}
},
{
"op": "remove", "path": "id=='1'"
}
]
我的主要问题是如何根据字段 id
识别要删除的元素。有专门的表达方式吗?我想到了类似的东西:id=='1'
.
最后一个问题:JSON补丁针对的是响应内容吗?
非常感谢您的帮助! 蒂埃里
您应该能够简单地使用要删除的资源的路径。
PATCH /contacts
[
{
"op": "add",
"path": "/-",
"value": {
"firstName": "my first name",
"lastName": "my last name"
}
},
{
"op": "remove",
"path": "/0"
}
]
环顾四周,似乎对此有些困惑,但是 standard says““删除”操作删除了目标位置的值”,例如:
{ "op": "remove", "path": "/a/b/c" }