成员和管理员用户的Api端点

时间:2019-02-11 19:17:09

标签: api asp.net-core-webapi api-design

我在API中拥有以下资源:

公司>项目> ProjectUser>用户

资源如下:

  1. 一个公司有很多项目;

  2. ProjectUser定义可以访问项目的用户;

我正在定义API端点以获取项目:

"/projects" > Get all projects that authenticated user can access        

"/companies/{companyId}/projects" > Get projects with `companyId` that authenticated user can access

我还需要3个仅由管理员用户访问的端点:

  1. 获取所有用户的所有项目

  2. 获取具有给定UserId的用户的所有项目;

  3. 使用具有给定companyId的{​​{1}}个用户来获取项目。

5个端点应如何成为?

1 个答案:

答案 0 :(得分:0)

在这种情况下,特定于用户的资源通常以mymeuser等开头。例如:/my/projects和{{ 1}}。这有助于区分仅需要身份验证但不需要资源过滤的常规请求(例如您的管理案例)。对于管理员查询,您将点击/my/companies/{companyId}/projects/projects端点。然后,您可以使用/companies/{companyId}/projects之类的东西来保护这些端点,并假设用户是管理员,则他们将收到所有项目。前缀为[Authorize(Roles = "Admin")]的路由仅需要my来确保有一些经过身份验证的用户,然后将利用资源级授权仅返回属于该用户的项目。