在API的上下文中,如果您使用Authorization Header
令牌在每个请求上对用户进行身份验证,那么您如何设置RESTful路由,否则将使用“用户ID”网址请求?
示例:
POST /api/school/5/user
将用户添加到学校
DELETE /api/school/5/user/???
从学校删除用户
但是,DELETE请求将要求请求中的用户ID,如果您使用Bearer Authorization
令牌,则不会在URL中传递,这会使这些资源很难设置
一般如何处理?
答案 0 :(得分:0)
我找到的最佳解决方案是:
1)您可以通过URL传递用户ID,但只需将其与从授权令牌中检索到的用户的用户ID进行比较。所以你可能有一个像:
这样的网址 /api/school/5/user/7
在您的中间件中,检查您的授权Heaer中的用户是否与通过URL传递的用户相匹配。这样就可以维护RESTful路由。
OR
2)更改一些URL结构并具有Me
路由前缀。因此,任何基于登录用户的路由都应该以{{1}}(或类似)为前缀。 Spotify,Facebook和许多其他公司的API使用它。
我更喜欢它的第一个解决方案,因为即使第一个解决方案看起来更标准,在URL中传递用户ID的想法也不太理想。