Spring boot 如何使用restful api的条件修补嵌套对象中列表的属性

Spring boot 如何使用restful api的条件修补嵌套对象中列表的属性,spring-boot,api,rest,patch,api-design,Spring Boot,Api,Rest,Patch,Api Design,我应该如何为补丁操作设计一个Restful API,以支持使用条件更新a列表中的某些属性 假设我有以下json模型: { "key1": "value", "key2": "value", "list": [ { "property": "someValue", "toBePatched": "value" }, { "property": "otherValue", "toBePatched": "valu

我应该如何为补丁操作设计一个Restful API,以支持使用条件更新a列表中的某些属性

假设我有以下json模型:

{
"key1": "value",
"key2": "value",
"list": [
    {
        "property": "someValue",
        "toBePatched": "value"
    },
    {
        "property": "otherValue",
        "toBePatched": "value"
    }
]
}

当“property”等于“someValue”时,我需要修补列表中的“toBePatched”属性。通过查看json补丁,我认为这是一个好方法,但我不认为json指针支持查询?如何定义支持“/list/property=someValue/toBePatch”的路径

一种愚蠢的方法是将其作为查询参数传递给api,并在其周围添加一些逻辑,但我认为这不是一种标准的方法

[
  { "op": "test", "path": "/list/0/property", "value": "someValue"},
  { "op": "test", "path": "/list/0/toBePatched", "value": "value"},
  { "op": "replace", "path": "/list/0/toBePatched", "value": "the-new-value"}
]

这一点很重要,它允许您验证服务器是否没有更改您要更改的文档部分。有关详细信息,请参见第5节。

仅供参考,我没有
应用程序/patch+json
的答案,但是如果您发现应用程序/patch+json对于您的用例来说过于复杂,或者无法表达您想要的确切更改,您也可以制作自己的补丁格式。