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

Query Restful API Passing Username and Password

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

我有这些:

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

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

我想知道您对此有何看法?在正文中的查询字符串中发送我的用户密码。

我认为 Uber 使用了我用于重置密码的模式。你怎么看?

谢谢

这只是我的意见,但在 #6 上,也许将密码放在 POST 请求的 JSON 正文中会更好。这样它就不会直接在 URL 中(而且我认为 REST 原则说当你 POST 你应该让正文成为被发布的对象)。

当然,这些密码应该已经过哈希处理,所以没什么大不了的,但看起来 safer/nicer。

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

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

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

I would like to know what you think about this ? sending my user's password in a query string in the Body.

将其建模为请求正文会更整洁,但在安全性方面没有区别。除非您使用 HTTPS,否则任何人都可以嗅探到 HTTP POST,无论您决定在请求中的何处传递数据。