2015-10-23 23 views
4

我給出了一個關於討論HTTP methodstatus code的常見用戶登錄/註銷示例。我希望它可以幫助人們輕鬆理解。如何定義登錄和註銷的HTTP方法和狀態碼?


傳統沒有寧靜的API設計:

當用戶登錄/退出一個網站,它肯定由POST方法的HTTP請求來訪問後端服務。

這是不容置疑的。


但是如果我遵循restful api設計模式,還是它的設計?

我的想法是:

  • 登錄

Login將生成令牌密鑰當用戶登錄。我認爲這是數據庫的創建動作,因爲生成一個令牌密鑰,所以它應該返回201 Created狀態代碼?

  • 註銷

相對,Logout將刪除令牌密鑰,當用戶發送他的令牌,並做註銷。我認爲這是對db的刪除操作,因爲刪除了令牌密鑰,所以它應該返回204 No content狀態碼?

儘管我認爲它可能適合HTTP方法的含義,如果我提供或共享此API設計,是否會讓其他開發人員感到困惑?

我不知道這個想法是或不是很好。我想聽你的意見。

回答

3

我不認爲你描述的場景會讓開發人員感到困惑。根據我的經驗,很少有人會在200,201或204周圍進行特殊處理,而典型案例是code >= 200 && code < 300。你的邏輯不是不健全的。如果您要返回令牌,則201將是合理的,如果您沒有返回任何內容,則返回204

然而,生成令牌是真正的你在登錄一個副作用。POST /login也沒有創造一個login資源像POST /items將創建一個item和API令牌是不典型的資源。出於這個原因,200 OK會更合適,因爲您只是授予用戶權限以轉移到受保護資源,儘管創建了令牌。如果您四處尋找身份驗證示例,似乎發送200或重定向用戶是典型的解決方案。

+0

這些行**生成一個令牌實際上是您登錄的一個副作用**突出 - 提醒關注API設計分離。 – Abhijeet