【发布时间】:2014-04-07 20:50:26
【问题描述】:
我想提供重置用户密码的功能。这个调用显然不需要认证。 首先我想到了这样的事情:
DELETE /users/{id}/password:生成一个重置令牌,通过电子邮件发送给用户
POST /users/{id}/password:在正文中需要新密码和有效的重置令牌
但问题是,应用程序或网站无法向我提供用户的 ID,因为它只能要求用户提供他的电子邮件地址。
还有许多其他(未经身份验证的)对我们 API 的调用,其中不存在 ID,并且用户仅通过其电子邮件来识别。
我们在团队中讨论了以下解决方案:
- 将 URL 中的 ID 替换为用户电子邮件
- 从 URL 中剪下 ID,并为电子邮件提供查询参数
如果我必须在这两者之间进行选择,我会选择第一个,因为我认为通过查询参数提供必要的东西不是 RESTful,因为它们总是代表一些可选的东西,比如过滤资源。 是否有更好的方法来设计这些 URL,或者在 REST 约束方面用用户电子邮件替换 ID 就好了?
【问题讨论】:
标签: rest url-design