Spring 具有多对多关系的Rest API路径

Spring 具有多对多关系的Rest API路径,spring,rest,api,Spring,Rest,Api,我正在为多对多关系定义一个rest路径。 我想获得一个公司的客户用户列表。 下面的路径是否足够 /api/v1/users/companies/{companyId}/guests 因为我把它放在UserController中,所以它不可能 /api/v1/companies/{companyId}/guests 你有什么建议吗?我本来打算写一篇评论,但是太长了,所以我写了一个答案 首先,REST是一种架构风格,而不是设计URI的食谱。REST不强制任何URI设计(只要它符合),并且完全由您

我正在为多对多关系定义一个rest路径。 我想获得一个公司的客户用户列表。 下面的路径是否足够

/api/v1/users/companies/{companyId}/guests
因为我把它放在UserController中,所以它不可能

/api/v1/companies/{companyId}/guests

你有什么建议吗?

我本来打算写一篇评论,但是太长了,所以我写了一个答案

首先,REST是一种架构风格,而不是设计URI的食谱。REST不强制任何URI设计(只要它符合),并且完全由您选择能够更好地识别您的资源的URI


你有什么建议吗

对这个问题的回答往往几乎完全基于观点,而不是事实、参考资料或具体的专业知识。从这一点上你会读到我的个人观点

如果来宾和公司资源可以独立管理,我将使用以下映射:

/companies
然后,您可以使用查询参数筛选给定公司的来宾:

GET /guests?company={id} HTTP/1.1
Host: example.org
要为给定公司创建来宾资源,您可以使用:

POST /guests HTTP/1.1
Host: example.org
Content-Type: application/json

{
  "name": "John Appleseed",
  "companyId": 1
}

REST不关心资源标识符使用什么拼写,只要它们与中定义的生产规则一致

那很好

/api/v1/companies/{companyId}/guests
那也可以

/d4158568-c40f-4c51-93cd-25642f6f42e2
那也是

/api/v1/companies/guests?companyId={companyId}

在网络上,您可能更容易看到这样的标识符;表单是使客户机能够提供数据的一种有用方式,HTML具有从表单中的数据创建URI的生成规则。当然,HTTP还有一些机制,允许您将客户机的注意力从一个URI转移到另一个URI,因此您不必将标识符限制为适合特定客户机的标识符。

我确实理解,rest路径设计没有规则。我正在寻找一个好的设计。你的建议很好。我只是应用了它。谢谢。我认为/api/v1/companys/{companyId}/guests比/api/v1/companys/guests?companyId={companyId}更好
/d4158568-c40f-4c51-93cd-25642f6f42e2
/api/v1/companies/guests?companyId={companyId}