我有以下API资源:
/managers
/managers/activate?activationToken=TOKEN
/managers/login
/managers/resetPassword
/managers
端点用于CRUD操作,还创建了一个新的Manager,然后通过电子邮件以/managers/activate?activationToken=TOKEN
的形式通过电子邮件发送激活链接,然后该资源返回“ Manager”的JSON对象表示形式带有将用于后续请求的身份验证令牌。
或者,/managers/login
端点接受一个管理器对象或查询参数(用户名和密码)进行登录(表示获得身份验证令牌)
响应如下:
{
"manager" : {
"entityId" : "0-1",
"authToken" : "THE_TOKEN"
}
}
如果管理员忘记了密码,则资源/managers/resetPassword
可用,并且HTTP GET传递到此端点,并将电子邮件地址和新密码作为有效负载传递,该资源将通过电子邮件发送密码重置链接,该链接看起来基本上是像这样:/managers/resetPassword?resetPasswordToken=TOKEN"
,当通过简单的HTTP GET访问时,它会触发密码更新,这特别有效,因为管理员在电子邮件中只需单击此按钮,默认情况下,浏览器在这种情况下就可以触发HTTP GET。 / p>
此系统有效,但它不是RESTful的,也就是说,它打破了基于“名词”的资源URI,并引入了诸如“登录”,“重置密码”和“激活”之类的动词,因此,这里的问题是我们如何做到这一点这样,它将完全基于RESTful和基于纯名词的URI。