最佳答案
据我所知,每个单独的资源都应该有只有一个标准路径。那么在下面的例子中,好的URL模式是什么呢?
以公司的rest表示为例。在这个假设的例子中,每个公司拥有 0个或更多的部门,每个部门拥有 0个或更多的员工。
一个没有关联公司的部门可以不存在。
没有相关部门的雇员可以不存在。
现在我发现资源模式的自然表示是。
/companies
公司的集合接受新公司的POST获取整个集合。/companies/{companyId}/departments
接受新项的POST。(在公司内部创建一个部门。)/companies/{companyId}/departments/{departmentId}/
/companies/{companyId}/departments/{departmentId}/employees
/companies/{companyId}/departments/{departmentId}/employees/{empId}
考虑到每个部分的限制,我认为这是有意义的,如果嵌套有点深的话。
然而,如果我想列出所有公司的所有员工(GET
),我的困难就来了。
它的资源模式将最接近地映射到/employees
(所有员工的集合)。
这是否意味着我也应该有/employees/{empId}
,因为如果是这样,那么就有两个URI来获得相同的资源?
或者可能整个模式应该是扁平的,但这意味着雇员是一个嵌套的顶级对象。
在基本层面上,/employees/?company={companyId}&department={deptId}
返回与嵌套最深的模式完全相同的员工视图。
对于资源被其他资源拥有但应该可以单独查询的URL模式,最佳实践是什么?