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

时间:2019-06-21 10:18:57

标签: spring rest api

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

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

因为我将其放在UserController中,所以不能将它

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

您有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我本来打算写评论,但是因为时间太长,所以我写了一个答案。

首先,REST是一种建筑风格,而不是用于设计URI的食谱。 REST不执行任何URI设计(只要它符合RFC 3986),并且完全由您来选择可以更好地标识资源的URI。


  

您有什么建议吗?

该问题的答案通常几乎完全基于观点,而不是事实,参考或特定的专业知识。从这一点上您会读到的是我的个人观点

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

/companies
/guests

然后,您可以使用 query参数过滤给定公司的来宾:

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
}

答案 1 :(得分:0)

REST不在乎您为资源标识符使用什么拼写,只要它们与RFC 3986中定义的生产规则一致即可。

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

很好

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

那也很好。

/d4158568-c40f-4c51-93cd-25642f6f42e2

也是。

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

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