RESTful Routing - API中的标头授权

时间:2016-03-23 17:32:45

标签: rest

在API的上下文中,如果您使用Authorization Header令牌在每个请求上对用户进行身份验证,那么您如何设置RESTful路由,否则将使用“用户ID”网址请求?

示例:

POST /api/school/5/user

将用户添加到学校

DELETE /api/school/5/user/???
从学校删除用户

但是,DELETE请求将要求请求中的用户ID,如果您使用Bearer Authorization令牌,则不会在URL中传递,这会使这些资源很难设置

一般如何处理?

1 个答案:

答案 0 :(得分:0)

我找到的最佳解决方案是:

1)您可以通过URL传递用户ID,但只需将其与从授权令牌中检索到的用户的用户ID进行比较。所以你可能有一个像:

这样的网址

/api/school/5/user/7

在您的中间件中,检查您的授权Heaer中的用户是否与通过URL传递的用户相匹配。这样就可以维护RESTful路由。

OR

2)更改一些URL结构并具有Me路由前缀。因此,任何基于登录用户的路由都应该以{{1​​}}(或类似)为前缀。 Spotify,Facebook和许多其他公司的API使用它。

我更喜欢它的第一个解决方案,因为即使第一个解决方案看起来更标准,在URL中传递用户ID的想法也不太理想。