2015-08-19 57 views
0

我正在爲我的用戶構建一個Restful API。查詢Restful API傳遞用戶名和密碼

我有這些:

1. GET - >用戶/ {ID}這是Id以獲取
2. POST - >用戶/ {} DTO這是添加
3. PATCH/PUT - >用戶/ {DTO}這是用於更新信息
4.刪除 - >用戶/ {ID}卸下
5.刪除 - >用戶/ {名}/reset_pass重置密碼
6. POST - >用戶/?username = {userName} & password = {密碼}

所以我對5號和6號(特別是6號)有些不確定。

我想知道您對此有何看法?在正文的查詢字符串中發送我的用戶密碼。

我想Uber使用我用來重置密碼的模式。你對此有何看法?

感謝

回答

1
4. DELETE -> Users/{id} Removing 
5. DELETE -> Users/{username}/reset_pass Reset Password 
  • 這是不相符的。您可以通過用戶標識或用戶名來標識。如果您同時需要,請使用不同的URL命名方案。
  • reset_pass是動詞一樣。考慮使用DELETE Users/{id}/password。根據密碼的不同,DELETE可能會或可能不適合用例。

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

再次,這是不是與你的URL格式一致。如果您想爲用戶創建新密碼,請使用POST Users/{id}/password

我想知道您對此有何看法?在正文的查詢字符串中發送我的用戶密碼。

將它建模成請求體更加簡單,但它在安全性方面沒有區別。除非您使用HTTPS,否則任何人都可以嗅探HTTP POST,而不管您決定傳送數據的請求在哪裏。

+0

謝謝,迪派克。我喜歡你的答案。我將更改第6號。如果我的刪除端點不會永久刪除用戶,該怎麼辦?在這種情況下,我們必須軟刪除用戶? –

+0

我還不清楚數字5。我們將生成一個令牌併發送一封電子郵件給用戶並點擊一個鏈接。所以我不確定是否必須使用DELETE?可能是PATCH是一個更好的選擇? –

+0

您無法通過電子郵件鏈接'直接DELETE'或'PATCH'。點擊GET請求中的結果。編寫一個簡單的HTML頁面,可以使用'DELETE' HTTP方法和電子郵件與參數鏈接來發出ajax請求。你可以在幕後軟或硬刪除。 –

0

這只是我的看法,但在#6也許把密碼在POST請求的JSON身體會更好。這樣它不直接在URL中(我認爲REST原則說,當你POST你應該有身體是被張貼的對象)。

當然,這些密碼應該已經被散列,所以它不是太大,但它似乎更安全/更好。

+0

這是一個內部API,我們正在使用防火牆和其他安全方法來保護我們的服務。你對此有何想法?我試圖說服我的團隊使用SSL,但架構師不想使用它。 –

相關問題