gpt4 book ai didi

rest - 具有 RESTful 的复杂域 URL 结构

转载 作者:行者123 更新时间:2023-11-30 23:46:22 25 4
gpt4 key购买 nike

我正在围绕相当复杂的底层域构建一个 RESTful 包装器。我使用 UML 包和类构建了一个域模型,并从有意义的类中派生了 REST 资源。

当涉及到 endpint-URL 设计时,我决定将包/类结构直接映射到 URL,以简化流程并在我的逻辑模型(域)和物理实现(REST API)之间实现清晰的可追溯性.

假设我有以下域提取:

enter image description here

Admin 和 Work 是包,而 User、Permission 和 Task 是类(REST 资源)。

我从该域派生了以下端点 URL:

  • mydomain/admin/user -> 用户集合
  • mydomain/admin/user/id -> 带有 id 的用户实例
  • mydomain/admin/user/id/permissions -> id 用户的所有权限
  • mydomain/work/task,等等...

我的一个同事注意到 URL 不是最优的,主要是因为这些“包”部分没有映射到具体资源。例如“admin”不是资源而是 URL 的一部分。随着域结构的增长,URL 中会出现更多这些中间的非资源段,他发现它是错误的。

我觉得这很好,因为 URL 结构本身可以说明有关资源的一些信息,并且有一个完整的、有据可查的域模型作为后盾。

这是否违反了 RESTful 标准?

最佳答案

Is this a violation of RESTful standard?

没有。 REST 对 URL 的外观没有意见。您可以使用像

这样的 URL
/foo/bar/baz?qux=12

不违反任何 REST 原则。这样的 URL 对人类读者没有任何意义,但这并不重要。

没有必要像 URL 的每个部分一样

/foo
/foo/bar

映射到资源。事实上,RESTful URL 必须遵循某种模式或构建规则是一种常见的误解。事实并非如此。

当然有一些常用的最佳实践。一种这样的做法是拥有收集资源,例如

/mydomain/admin/user

单一资源,例如

/mydomain/admin/user/42

但是,REST 并不要求这样做。

关于rest - 具有 RESTful 的复杂域 URL 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054384/

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