我在API中拥有以下资源:
公司>项目> ProjectUser>用户
资源如下:
一个公司有很多项目;
ProjectUser定义可以访问项目的用户;
我正在定义API端点以获取项目:
"/projects" > Get all projects that authenticated user can access
"/companies/{companyId}/projects" > Get projects with `companyId` that authenticated user can access
我还需要3个仅由管理员用户访问的端点:
获取所有用户的所有项目
获取具有给定UserId
的用户的所有项目;
使用具有给定companyId
的{{1}}个用户来获取项目。
5个端点应如何成为?
答案 0 :(得分:0)
在这种情况下,特定于用户的资源通常以my
,me
,user
等开头。例如:/my/projects
和{{ 1}}。这有助于区分仅需要身份验证但不需要资源过滤的常规请求(例如您的管理案例)。对于管理员查询,您将点击/my/companies/{companyId}/projects
和/projects
端点。然后,您可以使用/companies/{companyId}/projects
之类的东西来保护这些端点,并假设用户是管理员,则他们将收到所有项目。前缀为[Authorize(Roles = "Admin")]
的路由仅需要my
来确保有一些经过身份验证的用户,然后将利用资源级授权仅返回属于该用户的项目。