3

我在使用 JSON Patch 更新集合的过程中找不到示例。事实上,我想PATCH在集合 REST 资源上使用一种方法来更新关联的集合,而无需再次发送整个集合。我想知道 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:

PATCH /contacts
[
  {
    "op": "add", "value": {
      "firstName": "my first name",
      "lastName": "my last name"
    }
  },
  {
    "op": "remove", "path": "id=='1'"
  }
]

我的主要问题是如何根据其字段识别要删除的元素id。有没有专门的表达方式?我想到了类似的东西:id=='1'

最后一个问题:响应内容是JSON Patch针对的吗?

非常感谢您的帮助!蒂埃里

4

1 回答 1

3

您应该能够简单地使用要删除的资源的路径。

PATCH /contacts
[
  {
    "op": "add",
    "path": "/-",
    "value": {
      "firstName": "my first name",
      "lastName": "my last name"
    }
  },
  {
    "op": "remove", 
    "path": "/0"
  }
]

环顾四周,似乎对此有些困惑,但标准说““删除”操作会删除目标位置的值”,例如:

{ "op": "remove", "path": "/a/b/c" }
于 2015-04-29T08:15:14.363 回答