2015-04-07 154 views
0

我有一個REST API,我想創建一個方法來接受用戶名和密碼,確保它們是有效的並返回用戶資源。用於驗證憑據的REST方法

這不是驗證REST API的用戶。用戶是獨立系統的一部分,並由API管理它們。

什麼方法和URL適合這個?

GET似乎不是一個好主意,因爲它會將密碼放在查詢字符串中。此外,此方法可能會更新用戶的最後登錄日期,所以它不是冪等的。

我可以使用PUT,但我用它來更新用戶。所以我可以把它放到一個不同的URL上,但是這個URL是什麼?類似/user/credentials可能意味着您正在更新憑據,而不是驗證它們。

回答

2

我通常處理這個問題的方法是通過執行一個POST請求,例如, /user/login或簡單地/login

您基本上正在創建登錄嘗試,因此POST聽起來很合理,就像您可以使用POST a search request一樣。

通過這樣做,您允許自己將登錄憑據放在POST正文中,所以它們不會在URL中公開。而且你沒有更新用戶資源,所以你不必使用PUT。

POST http://example.com/login HTTP/1.1 
{ 
    "username": "Jon Skeet", 
    "password": "SOiscool" 
} 
+0

好的,我可以購買「登錄」作爲名詞。 –

1

您是POST荷蘭國際集團用戶需要一個「用戶資源」使用「獨立系統」的事實。 POST是唯一的動詞是appropriate when a method isn't idempotent

如果「獨立系統」是用戶將永遠登錄的唯一可以想象的系統,我會選擇一個簡單的URL,如/user/login。否則,我會爲「用戶與'單獨系統'的關係」添加一個路徑段,如/user/theSeperateSystem/login