用于' self'的REST API过滤器

时间:2018-05-31 04:30:22

标签: rest api security restful-architecture

最终用户和管理人员都有很多兼容的API。我将使用偏好并举两个例子:

  • / user / preferences - 这为最终用户提供了他们的偏好
  • / users / {user} / preferences - 这可以提供任何人的偏好

显然这会导致重复。当然,我只能使用' / users / {user} / preferences'对于最终用户和管理员,但最终我遇到了其他问题:

1)此人需要在每次通话中输入用户ID,这很笨拙。

2)安全性现在将成为一个问题,因为后端需要确保正确管理每个请求,即恶意的人不能输入其他人的ID并检索他们的偏好。

这里最好的模式是什么?

1 个答案:

答案 0 :(得分:0)

一个选项是让/user/preferences为管理员调用选择?userid=参数。然后,您可以使用基于admin == true && args[userid]的相同端点和分支。

代理api端点的注释也很好,而不太具体的调用(/user/preferences)会调用更具体的端点(/user/{userid}/preferences)。

两者都是不错的选择。很多人将所有管理员调用放在/admin/...下并添加处理程序以验证调用者实际上是管理员,然后再路由到常规调用(/admin/users/preferences - >验证is_admin - > {{1 }})。