gpt4 book ai didi

rest - 使用 REST API 更新嵌套对象

转载 作者:行者123 更新时间:2023-12-04 15:52:34 25 4
gpt4 key购买 nike

我有资源Student和 4 个 API 端点:

POST: /students
GET: /students/{id}
PUT: /students/{id}
DELETE: /students/{id}

现在,我想添加新属性 Address作为 Student 的对象:
class Student 
{
public int Id;
public string Name;
public Address Address;
}
Address有房产 Street也作为对象。

我的问题是,如果我只想更新 addressstreet ,最好是:
  • 使用更新学生 API:提供所有学生属性,即使它们没有更改
  • 创建新端点 PUT: /students/{id}/addressPUT: /students/{id}/address/street
  • 最佳答案

    这取决于您希望 API 对客户有多友好。我最近看到一个 API 返回一个对象,但为了更新对象中的单个字段,客户端必须调用另一个端点来获取额外信息以添加到原始对象,以便 PUT 更新的对象。我认为这是对客户不友好的。

    如客户GETStudent他们得到了完整的对象 Id , Name , Address , Street那么我会期待 PUT: /students/{id}能够处理一个完整的对象,更新与数据库中或存储对象的任何地方不同的字段。如果 API 给客户端一个完整的对象,那么 API 应该是客户端友好的,并且能够接受完整的对象,而不是让客户端解构对象。

    我不希望客户必须提取 Address来自 Student ,然后提取 Street从地址并将其发送到 PUT: /students/{id}/address/street如果 API 给了客户端一个完整的 Student对象放在首位。

    这种方法的唯一缺点是带宽。如果 Street 上的单个字母发生变化,则客户端必须更改为 PUT整个Student目的。所以这真的取决于客户端是什么以及它在什么网络上运行。互联网上的 REST 客户端?接受完整的对象。资源受限设备上的嵌入式客户端?它可能需要发送对象的片段,但这会导致 REST 端点与 Student 匹配。对象层次结构对我来说是紧密耦合的,并不真正推荐。

    关于rest - 使用 REST API 更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53263013/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com