我正在尝试为几种用户类型组织REST api,但我不明白资源应该如何相互投入。例如,管理员可以使用员工列表进行操作(创建,编辑和删除项目)。管理员还可以操纵每个员工的工作场所列表。我认为api路线应该是这样的:
GET: /employees
GET: /employees/{id}
POST: /employees
PUT: /employees/{id}
DELETE: /employees/{id}
GET: /employees/{id}/workplaces
GET: /employees/{id}/workplaces/{id}
POST: /employees/{id}/workplaces
PUT: /employees/{id}/workplaces/{id}
DELETE: /employees/{id}/workplaces/{id}
我知道如果id
的资源不存在,那么我应该返回404: Not found
,但GET: /employees/{id}/workplaces/{id}
呢?在404: Not found
的员工或工作场所不存在的情况下,我是否应该返回id
?或者可能存在此任务的其他解决方案?
另一个问题是具有不同权限的用户具有不同的资源访问权限。例如,部门主管可以获得其部门的员工列表,但无法获得其他部门的列表。我提出以下API路径:
GET: /departments/my/employees
GET: /departments/my/employees/{id}
正如您在上面所看到的,我建议替换关键字id
上的my
,这意味着必须从授权令牌中取出id
部门。拥有更多权限并可以列出部门的其他用户可以执行以下操作:
GET: /departments/{id}/employees
GET: /departments/{id}/employees/{id}
这是构建REST服务的真正方法吗?