當你在估狗登入畫面輸入帳號密碼並按下登入按鈕,其實就是對估狗伺服器端發送「我是小明,拜託讓我進去!」的請求。
當你發送任何請求給伺服器,伺服器都必須發送回應給你。如果確實存在小明這個帳號,系統就該發送「登入成功!」的回應,讓你成功登入;若不存在、或你密碼輸入錯誤就該回傳「登入失敗」的訊息。
但只寫登入失敗,而不說明登入失敗的原因,這樣資訊量好像有點太少了啊?是密碼錯誤、帳號錯誤、密碼已經被換過、驗證碼錯誤還是其他任何原因,講清楚才好讓使用者知道該怎麼做
為了讓客戶端快速明白請求的結果如何,我們伺服器端的回傳值不能是太客製化的東西……例如不論是密碼不對或是帳號不對,應先統一歸類為「驗證失敗」、伺服器已超載或是伺服器未開機,都先歸類為「Server Error」錯誤 — 先有了模糊的分類,客戶端比較好設定針對不同的錯誤,該做出什麼應對。
那細節的部分,除了 Status Code,伺服器還會另外回傳一則 Message,Message 裡就會描述剛剛出錯誤的詳細原因是什麼 (例如:Password Incorrect)。這樣客戶端的應對才能更完整!這也是為何有 status code 的存在。
HTTP 有事先定義好了一些回傳值:例如最常見的 404 回傳值,代表你請求的資源不存在。500 代表伺服器那端有問題須解決。
讓我們來看看跟驗證有關的各種狀態碼:
// Request
{
Authorization: "", // token 為空白
path: "/post/11",
}
// Response
HTTP/1.1 401 Unauthorized