我想创建REST登录/注册URI,以进行现有用户登录或新用户注册。经过一番搜索,我发现大多数此类表单都是使用以下规则设计的:
GET /login
获取登录资源
POST /login
登录并获取用户个人资料资源
GET /register
获取注册资源
POST /register
注册并获取新的用户个人资料资源
但是,我认为这不是100%REST的方法,因为REST的规则之一是资源应该是名词而不是动词(除了某些特殊情况,例如搜索api)。对于这种情况最好的解决方案是什么?
答案 0 :(得分:0)
对此没有一个正确的答案,因此,我将尝试提出一些常见的解决方案的想法。
登录(又名身份验证)本身通常以非RESTful方式(例如OAuth2)处理。如果HTTP是无状态的,是否真的应该有一个“登录”?每个请求都应携带所有信息,以允许服务器对客户端进行身份验证。如果您确实想将登录作为RESTful端点处理,您可以问自己:“我正在更改什么状态?一种解决方法是,您可能在创建一组凭据”。我现在假设您正在寻找一种最佳实践/通用方法,而不是一种非常纯粹的REST方法。
获取当前用户通常通过诸如/current-user
或/whoami
之类的端点来处理。对此发出GET
请求可能会产生有关用户的信息,也可能会立即重定向到规范的用户端点,例如/users/1234
。执行PUT
请求可以再次更新用户,或将重定向返回到实际的用户端点。
如果您在/users
之类的资源上拥有用户列表。通过对此集合执行POST
请求来创建新的用户资源是很有意义的。