【问题标题】:How do I remove a sub resource by restful PATCH如何通过restful PATCH删除子资源
【发布时间】:2016-06-09 04:59:20
【问题描述】:

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

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

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

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

PATCH: /person/3

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

我曾经通过将对象设置为{} 来删除对象,或者通过将其设置为[] 来删除数组,但我不能100% 确定原始属性的最佳做法是什么(例如companyId在这种情况下)。有什么想法吗?

谢谢

【问题讨论】:

    标签: rest patch restful-architecture httpverbs


    【解决方案1】:

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

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

    我认为确切的内部实现(可空的 int 与默认的 0/-1)取决于您。

    【讨论】:

    • 建议标准。尚未接受,但我个人认为这是PATCH 的正确方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多