构建 RESTful API 端点的最佳方式(两个角色,相同端点)

问题描述 投票:0回答:1

我正在寻找有关构造端点的最佳方法的意见,以便多个用户角色可以使用相同的端点。

假设我们有两个用户角色

customer
admin
,我读到不建议在端点中使用角色类型,例如:
/api/customers/orders/
/api/admin/orders/

如果我有一个端点

PUT: /api/orders/{ORDER_ID}/photo-proof
,我知道我应该采用用户经过身份验证的角色,并根据用户拥有的角色执行业务逻辑。
admin
可以更新照片校样图像,而
customer
可以批准或拒绝照片校样。

我的问题是“如果管理员也是有订单的客户怎么办?”如果管理员以管理员身份访问上述端点,则一切正常。但是,如果管理员从客户 UI 访问该端点,并且该端点正在以用户的角色来确定应该运行哪个业务逻辑,那么它将运行不正确的业务逻辑,因为管理员现在是客户并且想要批准或否认自己的照片证明。

希望这是一个有意义的问题。任何指导将不胜感激!

node.js api rest endpoint
1个回答
0
投票

听起来核心问题是:

端点正在以用户的角色来确定应该运行哪个业务逻辑,然后它将运行不正确的业务逻辑,因为管理员现在是客户,并且想要批准或拒绝自己的照片证明。

“运行什么业务逻辑”更好地取决于操作,而不是用户角色。例如,您有 2 个单独的任务:

  • 管理员可以更新照片证明图像
  • 客户可以批准或拒绝照片证明。

也许这 2 个操作是 2 个不同的 HTTP 方法,或者如果它们(例如)都是

POST
请求,则您应该检查请求正文以找出操作的意图。

只有在弄清楚用户打算做什么之后,您才应该根据角色确定用户是否允许这样做。

© www.soinside.com 2019 - 2024. All rights reserved.