繁体   English   中英

如何使用 REST api 从单个端点更新复杂对象?

[英]How would I update complex object from a single endpoint using REST api?

例如我有一个对象,如

{
    ID: 1000,
    Type: "Ticket",
    "Followers": [
    {
    "UserID": 1200
    },
    {
    "UserID": 1201
    },
    {
    "UserID": 1202
    }]
}

如果我想使用新请求更新此对象,将如何处理列表 Followers?

例如,如果使用 PUT 发送此更新请求,是否意味着 Followers 没有更改,或者 Followers 不为空?

{
    ID: 1000,
    Type: "Ticket",
    "Followers": []
}

我想您正在设计 API 并且您不是指现有的 API。

首先我明白你在谈论一个 RESTfull API?

因此,大多数情况下,您将拥有一个专用于更新特定参数的端点。

例如更新关注者:

PUT/PATCH /api/ticket/1000/followers

向此请求提供空数组或空值将意味着您正在删除您的关注者。

或者您也可以实现 DELETE HTTP 方法。 然后这个想法将仅将 PUT 用于更新逻辑 - 如果您提供空/空值,它将返回错误。

在这种情况下,删除关注者的唯一方法是使用 DELETE HTTP 方法:

DELETE /api/ticket/1000/followers

但同样,这将取决于您想要如何实施它,以及对您和最终用户来说最有用和最合乎逻辑的方式。

编辑:您的问题与没有子资源的单个端点 /api/ticket/1000 的使用有关。

因此,在不提供“关注者”的情况下在 PUT 中发送以下对象不会更改/删除关注者。

{
    ID: 1000,
    Type: "Ticket"
}

相反,在您的请求中为“关注者”提供密钥将更新关注者的值。 在这种情况下,它将删除它们:

{
    ID: 1000,
    Type: "Ticket",
    "Followers": []
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM