用于身份验证的 REST API URL 的最佳实践
Posted
技术标签:
【中文标题】用于身份验证的 REST API URL 的最佳实践【英文标题】:Best practice for REST API URL for authentication 【发布时间】:2020-11-12 07:51:20 【问题描述】:我是 REST API 开发的初学者,我在网上阅读了一些文档,现在我正在为具有不同类型用户的 2 个平台开发一个 REST API。
在 REST API 开发中为身份验证端点选择 URL 的最有效方法是什么?
第一条规则之一是切勿在 REST API URL 中使用动词,因此这些 URL 不正确。
/auth/resetPassword /auth/refreshToken /auth/登录 ...重置、刷新、登录都是动词。这个网址正确吗?有什么更好的选择?
那么如果我有更多那么一种用户可以正确使用这些?
/auth/customers/login /auth/admins/login 等登录是动词,对吗? 然后 /auth/:entity/ 在我看来不太适合我阅读的有关 REST API 的内容。
【问题讨论】:
【参考方案1】:“无动词”规则并不是硬性规则,它们只是人们喜欢的一种设计方法。
虽然绝对可以将每个端点转换为类似于名词的东西,并且您只是将状态推到管道中,但这并不总是可取的。如果你真的觉得你是在尝试在一个圆孔中钉方钉,那么你可能就是这样,像“登录”端点这样的东西绝对是一个经典的例子。
但是,如果您将所有内容都转换为“所有内容都必须是名词,并且我们正在 PUTing 和 GETing 状态”的 REST 样式,那么可以这样看待:
-
您没有登录,您正在创建一个新会话(使用 PUT 或 POST)。
您不是在“重置密码”,而是向
password
端点发送PUT
请求。
但我不确定是否会推荐引入这种复杂性。
我还建议您研究 OAuth2,因为您正在做的事情似乎至少有一些重叠,并且重新发明***可能是不可取的。
【讨论】:
确定我不想重新发明***,我只是问这种操作通常如何执行。感谢您的回复。以上是关于用于身份验证的 REST API URL 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django rest 框架在两个 api 之间配置身份验证的最佳方法是啥?
在 laravel 中使用 REST API 的最佳身份验证方法是啥?