0

我正在为我的用户构建一个 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号)有点不确定。

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

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

谢谢

4

2 回答 2

1
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.

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

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

于 2015-08-19T01:43:11.603 回答
0

这只是我的意见,但在 #6 上,将密码放在POST请求的 JSON 正文中可能会更好。这样它就不会直接在 URL 中(我认为 REST 原则说,当您POST应该将主体作为要发布的对象时)。

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

于 2015-08-19T01:05:18.530 回答