我正在为我的用户构建Restful API。
我有这些:
1. GET - >用户/ {id}这是通过Id获得的
2. POST - >用户/ {DTO}这是添加
3. PATCH / PUT - >用户/ {DTO}这是用于更新信息
4.删除 - >用户/ {id}删除
5.删除 - >用户/ {username} / reset_pass重置密码
6. POST - >用户/?用户名= {用户名}&密码= {密码}
所以我对5号和6号(特别是6号)有点不确定。
我想知道你对此有何看法?在Body中的查询字符串中发送我的用户密码。
我认为Uber使用我用来重置密码的模式。你怎么看待这个?
由于
答案 0 :(得分:1)
4. DELETE -> Users/{id} Removing
5. DELETE -> Users/{username}/reset_pass Reset Password
reset_pass
就像动词一样。考虑使用DELETE Users/{id}/password
。根据密码的不同,DELETE
可能适合或不适合用例。 6. POST -> Users/?username={userName}&password={password}
同样,这与您的网址格式不一致。如果您要为用户创建新密码,请使用POST Users/{id}/password
。
我想知道你对此有何看法?在Body中的查询字符串中发送我的用户密码。
将它建模为请求体是更简洁的,但它在安全性方面没有区别。除非您使用HTTPS
,否则任何人都可以嗅探HTTP POST
,无论您在哪个请求中决定传递数据。
答案 1 :(得分:0)
这只是我的意见,但在#6上可能会将密码放在POST
请求的JSON主体中会更好。这样它就不直接在URL中(我认为REST原则说当你POST
时你应该让正文成为被发布的对象。
当然,这些密码应该已经被散列,所以它不是太大了,但它看起来更安全/更好。