我很想了解有关 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。
话虽如此,在我看来,这样做是一种不好的做法。 REST 背后的想法之一是每个资源都可以使用URI http://en.wikipedia.org/wiki/Uniform_resource_identifier。在你的例子中,这个 URI 是路径和(我假设)内部 ID 的串联。该 URI 可以被其他“系统”使用并存储为引用。如果更改 PUT 上资源的 ID,则会更改 URI,并且对该资源的所有引用都将被破坏 (404)。
如果您觉得需要更改 URI 中的 ID,则您可能没有为其选择正确的属性。考虑其他不可变的东西(例如:用UUID http://en.wikipedia.org/wiki/Universally_unique_identifier并使用它而不是内部数据库 ID)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)