gpt4 book ai didi

RESTful API 设计 : should unchangable data in an update (PUT) be optional?

转载 作者:行者123 更新时间:2023-12-03 09:27:02 24 4
gpt4 key购买 nike

我正在实现一个 RESTful API,我不确定是否存在无法更改的数据的“社区接受”行为。例如,在我的 API 中有一个"file"资源,该资源在创建时包含许多在创建后无法修改的字段,例如文件的二进制数据,以及与之关联的一些元数据。此外,"file"可以具有书面描述和关联的标签。

我的问题涉及对这些"file"资源之一进行更新。特定"file"的 GET 将返回与文件关联的所有元数据、描述和标签,以及文件的二进制数据。特定"file"资源的 PUT 是否应该包含“只读”字段?我意识到它可以采用任何一种方式编码:a)在 PUT 数据中包含只读字段,然后验证它们与原始字段匹配(或发出错误),或 b)忽略 PUT 数据中只读字段的存在因为它们无法更改,如果它们不匹配或丢失,则永远不会发出错误,因为逻辑会忽略它们。

似乎它可以采取任何一种方式并且可以接受。忽略只读字段的第二种方法可以更紧凑,因为 API 客户端可以根据需要跳过发送只读数据;这对于知道自己在做什么的人来说似乎很好......

最佳答案

就个人而言,这两种方式都是可以接受的......但是,如果我是你,我会选择选项 A(检查只读字段以确保它们没有被更改,否则会引发错误)。根据您的项目范围,您不能假设消费者深入了解您的 Restful WS,因为他们中的大多数人不阅读文档或 WADL,即使他们是有经验的人。 :)

如果您不立即向消费者提供某些字段是只读的反馈,他们会错误地假设您的 Web 服务会在不仔细检查的情况下处理他们所做的所有更改,一旦他们发现“不一致”的更新,他们就会向其他人提示您的 Web 服务有问题。

如果只读字段与原始值不匹配,您可以通过两种不同的方式处理此问题...

  • 不处理请求。发送 409 冲突代码和特定的错误消息。
  • 处理请求,发送 200 OK 和一条消息,指出对只读字段所做的更改将被忽略。
  • 关于RESTful API 设计 : should unchangable data in an update (PUT) be optional?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939985/

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