Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
restfulapi:如何建模&x27;请求新密码';?_Api_Rest - Fatal编程技术网

restfulapi:如何建模&x27;请求新密码';?

restfulapi:如何建模&x27;请求新密码';?,api,rest,Api,Rest,我正在为一个预订应用程序设计一个RESTful API,很高兴看到我可以将应用程序的所有细节映射到4个HTTP方法 /users - GET, POST /users/({id}|myself) - GET, POST, PUT, DELETE /users/({id}|myself)/bookings - GET, POST /users/({id}|myself)/bookings/{id} - GET, POST, PUT, DELETE 示例:更新我自己的用户使用PUT to/user

我正在为一个预订应用程序设计一个RESTful API,很高兴看到我可以将应用程序的所有细节映射到4个HTTP方法

/users - GET, POST
/users/({id}|myself) - GET, POST, PUT, DELETE
/users/({id}|myself)/bookings - GET, POST
/users/({id}|myself)/bookings/{id} - GET, POST, PUT, DELETE
示例:更新我自己的用户使用PUT to/users/my

但现在我发现缺少一件事:如果我忘记了我的旧密码,可能会请求一个新密码。你知道我怎么能加上这个吗

/users/({id}|myself)/forgottenpassword/, GET or PUT

或者只是通过某种方式告诉用户去网站。

假设通过请求一个新密码,您指的是系统分配一个新的临时密码然后允许用户重置密码的典型操作,我会按照以下方式做一些事情:

POST:/users/imf/resetPassword


然后返回临时密码,向用户发送电子邮件,或者使用其他方法将新的临时密码传递回用户。

由于该操作本质上是一个更新,将生成一个新密码,因此我将使用POST动词。除非您已经安排了一些基于共享机密的质询/响应协议,这些协议可用于在没有密码的情况下验证请求者,否则您必须找到传递密码的替代方法。最简单的方法可能是通过电子邮件向记录帐户的用户发送一个链接,该链接可用于进行更改并显示其新密码。

将用户发送到网站是另一种选择,是的。这可能是最好的选择。这看起来一点也不满,您有一个RPC调用。看起来你可以给用户输入一个被遗忘的密码。。。奇怪:)我想如果id是用户应该记住的密钥,那么最好获取/password/{id}。然后,根据您的安全逻辑,您可以返回密码,也可以通过电子邮件向用户发送新密码。如果你坚持使用你的用户路径,你可以:GET/users/{id}/passwordPOST-听起来不错。用户将收到一封电子邮件,必须单击链接才能请求新密码。您违反了REST原则:)