gpt4 book ai didi

web-services - REST API 设计 : Is it ok to change the resource identifier during a PUT call?

转载 作者:行者123 更新时间:2023-12-04 11:41:52 27 4
gpt4 key购买 nike

我很想了解更多关于 PUT 调用的 RESTful 设计模式。具体来说,我是否通过在 PUT 调用中更改资源 ID 来违反规范?

考虑以下...

POST /api/event/  { ... } - returns the resource ID (eventid) of the new event in the body
GET /api/event/eventid
PUT /api/event/eventid - returns the (possibly new) resource ID depending on request body
GET /api/event/eventid - fails if the original eventid was used in the URI

如果 eventid 表示内部资源(如数据库记录),则 GET 和 PUT 的端点可以快速访问资源。如果 PUT 导致服务器移动底层资源,则 ID 可能会更改。

我这样做是否违反规范?

最佳答案

REST 不是一个严格的规范,而是一组指导方针和最佳实践,可以遵循这些指南和最佳实践来构建易于理解和使用的 Web 服务。因此,没有什么可以阻止您在 PUT 期间更改资源 ID。

话虽如此,这样做是 IMO 一种不好的做法。 REST 背后的想法之一是可以使用 URI 引用每个资源。 .在您的情况下,此 URI 是路径和(我假设)内部 ID 的串联。这个 URI 可以被其他“系统”使用并存储为引用。如果在 PUT 上更改资源的 ID,则更改 URI 并且对该资源的所有引用都将被破坏 (404)。

如果您觉得需要更改作为 URI 一部分的 ID,您可能没有为其选择正确的属性。考虑其他不可变的东西(例如:用 UUID 标记您的资源并使用它而不是内部数据库 ID)。

关于web-services - REST API 设计 : Is it ok to change the resource identifier during a PUT call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091133/

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