假设用户使用以下网址执行GET
以返回公司的所有服务:/api/company/{id}/service
然后,他们想要更新返回的一个服务对象。我应该遵循相同的约定,然后将它们转到PUT
到/api/company/{id}/service/{id}
,或者让它更简单一点,让它们PUT
到/api/service/{id}
,因为服务ID是全球独一无二。
我做更长网址的一个原因是我想检查用户是否属于公司,所以我可以根据请求轻松检查,因为我有公司ID,但如果我走直接路线我会必须从服务中找到公司ID并检查。
我进行了快速搜索,但没有看到任何明显的标准是什么。
由于
答案 0 :(得分:1)
我认为对这类问题的每一个答案都有点争议,因为你提出的两种方法在概念上都是正确的,无论如何我都会尝试回答。
在我看来,您必须从company
资源与service
资源之间的关系开始。如果service
由一个company
独占,那么我会选择更详细的路径/api/company/{id}/service/{id}
。相反,如果您的service
资源在不同的company
资源之间共享,那么我会更喜欢较短的全局/api/service/{id}
路径。
我选择背后的原因纯粹是传统的,旨在澄清两个资源在应用程序域中如何相互影响。
答案 1 :(得分:0)
我认为,您可以仅使用ID来削减URI,例如:
POST / api / {companyId} / {serviceId}
你会有这样的事情:
POST / api / movistar / balance
POST / api / movistar / sales
答案 2 :(得分:0)
首先,让您的客户关注链接,而不是分发"模板"如何调用具体的东西。 (也许你已经这样做了,从你的帖子中就不清楚了。)
也就是说,当他们GET
列出所有服务的资源时,您应该包含指向这些服务的链接(无论它们是什么)。这样,您的客户需要PUT
到您提供的URI。这样,您就可以完全控制URI结构。
这反过来意味着,您可以使用任何更方便的结构,因为无论如何它对客户来说都是透明的。如果您更愿意在URI中包含这两个ID,那么请继续。如果您不喜欢它,您甚至可以在以后更改它,而无需客户注意!