REST嵌套资源的最佳实践是什么?
据我所知,每个资源应该只有一个规范路径。因此,在下面的示例中,优秀的URL模式是什么?
以公司的休息代表为例。在这个假设的例子中,每个公司拥有 0个或更多部门,每个部门拥有 0个或更多员工。
没有关联公司,部门就不可能存在。
没有相关部门,员工就不能存在。
现在我会找到资源模式的自然表示。
/companies
一系列公司 - 接受新公司的接受。获取整个系列。
/companies/{companyId}
一家公司。接受GET,PUT和DELETE
/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模式的最佳实践是什么,其中资源由其他资源拥有但应该可以单独查询?
更新:请参阅下面的答案,看看我做了什么。
牛魔王的故事
慕妹3242003
幕布斯6054654