如何通过restful PATCH删除子资源

时间:2016-06-09 04:59:21

标签: rest patch restful-architecture httpverbs

当我们使用PATCH时,我们正在部分更新资源。如果我想删除部分资源,最佳做法是什么?

例如:我们有一个Person资源:

Person:
{
  id: 3,
  name: 'test',
  companyId: 1,
}

假设此人离开公司并且没有工作,那么公司ID应该在数据库中设置为null。当我想通过API删除companyId中的Person时,我是否应将有效负载中的companyId设置为null

PATCH: /person/3

Person:
{
  id: 3,
  companyId: null,
}

我过去通过将其设置为{}来移除对象,或者通过将其设置为[]来删除数组,但我不是100%确定什么是最佳做法原始属性(在本例中类似于companyId)。有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

查看RFC 6902(定义补丁标准),从客户端的角度来看,可以调用API,如

PATCH /person/3

[
    { "op": "remove", "path": "/companyId"}
]

我认为确切的内部实现(nullable int vs 0 / -1为默认值)取决于你。