gpt4 book ai didi

rest - 如何进行 REST-ful 更新?

转载 作者:行者123 更新时间:2023-12-04 10:28:43 24 4
gpt4 key购买 nike

如果我有对象,请说 Employee ,我想提供 2 种不同的更新方式 - 更新性能评级或更新联系信息。

构建 API 的 REST-ful 方式是什么?我认为正确的方法是 POST。

我担心的是,用户首先获取对象的两个部分(性能评级和联系信息),只更新一个部分,然后发布整个更新的对象似乎是不雅的。

我的另一个担忧是,发送仅填充某些字段的对象似乎不雅,因为对象的架构要求所有字段都完整,而省略字段只是为了支持 POST。 IE。它需要单独的模式来支持操作或在没有模式的情况下进行——这两种模式似乎都不对。

同样,使用标志来更新哪些字段也需要一个不同的模式来进行操作。

提供单独的方法并不适合名词-动词范式。

REST API 在需要处理此类情况时应该如何处理? REST 名词和应用程序实体之间是否需要多对一的映射?如果是这样,我们是否限制用于表示应用程序实体子集的 View 实体的 PUT?

我不是在寻找黑客或不雅的方式。我正在寻找 REST 哲学认为正确的解决方案。提前致谢!

最佳答案

我不确定这是否与您的担忧作斗争,但是看到 Rating 和 Info 如何也是资源,我会制作这样的 API(感谢 taylonr 提供模板:)

url/employees/{id}/[rating|info]

通过这种方式,您可以获得所有员工的表示、具有特定 ID 的员工、具有特定 ID 的员工的绩效评级以及具有特定 ID 的员工的联系信息。

创建具有初始化联系信息和绩效评级的新员工
POST url/employees { "id": "johnsmith", "rating": 4, "info": ["address": "street 1 a 1" , "email": "johns.old@mail.com"] }

更新 2 将适用于不同的 POST
PUT url/employees/johnsmith/rating  { "rating": 5 }
PUT url/employees/johnsmith/info { "email": "john.smith@company.com" }

关于rest - 如何进行 REST-ful 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8478829/

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