【问题标题】:RESTful concepts: organising hierarchical resourcesRESTful 概念:组织分层资源
【发布时间】: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服务的方式吗?

【问题讨论】:

    标签: rest restful-architecture


    【解决方案1】:

    GET: /employees/{id}/workplaces/{id}? 在这两种情况下,当具有该 ID 的员工或工作场所不存在时,我是否应该返回 404: Not found

    是的。

    GET: /departments/my/employees

    如果您的代码可以将 my 与真实 ID 区分开来,那么从 REST 的角度来看这很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多