查询 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
,无论您决定在请求中的何处传递数据。
我正在为我的用户构建 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
,无论您决定在请求中的何处传递数据。