【发布时间】:2016-12-05 07:09:14
【问题描述】:
我正在尝试为几种用户类型组织 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} 呢?当具有id 的员工或工作场所不存在时,我是否应该在这两种情况下返回404: Not found?或者可能存在其他解决方案来完成这项任务?
另一个问题是不同权限的用户对资源的访问权限不同。例如,部门主管可以得到他部门的员工名单,但不能得到其他部门的名单。我提出以下 API 路径:
GET: /departments/my/employees
GET: /departments/my/employees/{id}
正如你在上面看到的,我建议替换关键字my上的id,这意味着必须从授权令牌中获取部门的id。其他拥有更多权限并且可以列出部门的用户可以执行以下操作:
GET: /departments/{id}/employees
GET: /departments/{id}/employees/{id}
这是真正的构建REST服务的方式吗?
【问题讨论】: