登录/注册表单的 REST 资源
Posted
技术标签:
【中文标题】登录/注册表单的 REST 资源【英文标题】:REST resources for a login/registration form 【发布时间】:2019-05-26 20:19:56 【问题描述】:我想创建 REST 登录/注册 URI,以便让现有用户登录或新用户注册。经过一番搜索,我发现大多数此类表单都是使用以下规则设计的:
GET /login
获取登录资源
POST /login
登录并取回用户配置文件资源
GET /register
获取注册资源
POST /register
注册并取回新的用户配置文件资源
但是,我认为这不是 100% 的 REST 方法,因为 REST 的规则之一是资源应该是名词而不是动词(除了一些特殊情况,如搜索 api)。这种情况的最佳解决方案是什么?
【问题讨论】:
【参考方案1】:没有一个正确的答案,所以我将尝试就解决这个问题的常用方法提供一些想法。
登录
登录(又名身份验证)本身通常以非 RESTful 方式处理,例如 OAuth2。如果 HTTP 是无状态的,真的应该有一个“登录”吗?每个请求都应携带所有信息,以允许服务器对客户端进行身份验证。如果您确实想真正将登录作为 RESTful 端点来处理,您可以问自己:“我在改变什么状态?回答这个问题的一种方法是,您可能创建一组凭据”。我现在假设您正在寻找一种最佳实践/通用方法,而不是一种非常纯粹的 REST 方法。
当前用户信息
获取当前用户通常通过/current-user
或/whoami
等端点处理。对此执行GET
请求可能会产生有关用户的信息,也可能会立即重定向到规范的用户端点,例如/users/1234
。执行PUT
请求可以再次更新用户,或者返回到实际用户端点的重定向。
注册
如果您在/users
等资源上有用户列表。通过对此集合执行POST
请求来创建新的用户资源是有意义的。
【讨论】:
以上是关于登录/注册表单的 REST 资源的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django admin 的注册表单中删除用户名字段?