我正在为多对多关系定义一条休息路径。 我想获得公司客人的用户列表。 下面的路径是否足够?
/api/v1/users/companies/{companyId}/guests
因为我将其放在UserController中,所以不能将它
/api/v1/companies/{companyId}/guests
您有什么建议吗?
答案 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的机制,因此您不必将标识符限制为适合特定客户端的标识符。