查询Restful API传递用户名和密码



我正在为我的用户构建一个Restful API。

我有这些

1. GET -> Users/{id}这是通过id
获取2. POST -> Users/{DTO}这是添加
3.PATCH/PUT -> Users/{DTO}用于更新信息
4. DELETE -> Users/{id}删除
5. DELETE -> Users/{username}/reset_pass重置密码
6. POST -> Users/?username={username}&password={password}

所以我对5号和6号(特别是6号)有点不确定。

我想知道你对这件事的看法。在Body中以查询字符串发送我的用户密码。

我认为Uber使用了我重置密码时使用的模式。你觉得怎么样?

谢谢

4. DELETE -> Users/{id} Removing 
5. DELETE -> Users/{username}/reset_pass Reset Password 
  • 不一致。您可以通过用户id或用户名进行标识。如果两者都需要,请使用不同的URL命名方案。
  • reset_pass是动词。考虑使用DELETE Users/{id}/password。根据密码发生的情况,DELETE可能适合也可能不适合用例。

6. POST -> Users/?username={userName}&password={password}

同样,这与URL格式不一致。如果您想为用户创建新密码,请使用POST Users/{id}/password

我想知道你对这件事的看法。在Body中以查询字符串发送我的用户密码。

将其建模为请求体更简洁,但是在安全性方面没有区别。除非您使用HTTPS,否则任何人都可以嗅探到HTTP POST,无论您决定将数据传递到请求的哪个位置。

这只是我的观点,但是在#6上,也许把密码放在POST请求的JSON体中会更好。这样它就不是直接在URL中(我认为REST原则说,当你POST时,你应该让主体成为被发布的对象)。

当然,这些密码应该已经散列了,所以这不是什么大问题,但它看起来更安全/更好。

最新更新