如何使用json补丁更新集合

时间:2015-04-29 07:52:26

标签: rest json-patch

我无法在使用JSON Patch更新集合的途中找到样本。实际上,我想在集合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:

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

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

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

非常感谢avance的帮助! 亨利

1 个答案:

答案 0 :(得分:3)

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

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

环顾四周,似乎有一些混乱,但standard says“删除”操作会移除目标位置的值“,例如:

{ "op": "remove", "path": "/a/b/c" }