當前位置:
首頁 > 最新 > 認識HTTP響應狀態

認識HTTP響應狀態

認識HTTP響應狀態,說難也不難,就跟「認識你自己」一樣,只是一句話。不過從何入手學習確是一個難題,記住《計算機網路》那個簡單的講解就真的能在實際中應用自如?想想也是不可能在實際情況使用得如魚得水。割據了事物的聯繫性,認知起來就是盲人摸象。

HTTP響應狀態,是指服務端對一次HTTP請求的響應狀態碼。在萬維網中,客戶端與服務端其實是具有二元性,是嚴格區分你我的,儘管在某些方面服務端與客戶端看上去是一個整體。HTTP全稱HyperText Transtfer Protocol,即超文本傳輸協議,目的是充當連接客戶端程序與服務端程序的橋樑。客戶端程序,可以是瀏覽器、手機APP或者各種操作系統的安裝軟體(比如那些殺毒軟體)。

打個比方,伺服器比作船,客戶端程序比作舵手,響應狀態碼就是舵手操作後船的動作。如果正在向西航行的船需要向北轉向,舵手肯定需要在操作桿上修改船的航向,然後船順利轉向,這就表示操作成功,可以進行下一步操作。如果船轉向失敗,這就是另外一種響應,往往需要根據這種響應做另外的動作,修正船的航向。其實,客戶端程序也一樣。如果這次操作失敗了,會有友好提示,提示用戶做修正動作。根據船的具體響應做具體動作,在客戶端程序中就體現為根據HTTP響應狀態碼進行對應的處理。

狀態碼都是三位數,可以分為5大類

圖片出處:http://www.runoob.com/http/http-status-codes.html

比較常見的狀態碼如下:

l200:代表本次請求成功

l403:伺服器理解請求客戶端的請求,但是拒絕執行此請求。一般是訪問沒有對應許可權的資源時會出現。對於web伺服器開發,如果想要細粒度控制用戶許可權,可以根據請求的url判斷是否具有對應的許可權。

l404:伺服器無法根據客戶端的請求找到資源。

l500:伺服器內部錯誤,無法完成請求。

除了200響應狀態碼,以上其他的響應狀態碼,不同的WEB站點將會在客戶端程序以用戶友好的界面展示,提示本次請求出現異常。如以下幾張圖片所示,都是客戶端程序根據服務端程序的異常響應狀態碼,所做的友好展示界面,順便提示用戶可以現在進行的修正操作——即提供可點擊跳轉的按鈕鏈接。

這樣的方法,在《設計心理學》中一直強調——信息存儲於外部世界,要用限定的允許動作,提醒用戶可進行的下一步操作。

為了減少代碼修改的工作量與難度,客戶端程序一般會對異常響應狀態碼進行統一處理,下圖為我學習Node Express時使用的全局異常處理邏輯。這裡的Node Express充當客戶端角色。

除了現有的標準HTTP響應狀態碼,還有另外一種響應狀態碼——服務端自定義的響應狀態碼。這些狀態碼,大都表示服務端目前不允許的用戶操作行為。比如用戶確認購買一件商品,結果用戶在購買的同時商品被管理員下架了,如果這個時候後台查詢到商品已經下架,就會返回服務端自定義的響應狀態碼,友好提示用戶商品已經被下架,此次操作不成功。為什麼不用標準的響應狀態碼?因為標準的響應狀態碼已經被業界賦予標準的行為,修改標準的行為只會帶來額外的麻煩,得不償失。

至於為什麼會有HTTP響應狀態碼,服務端程序直接應答不行嗎?

不妨設想一下沒有HTTP響應狀態碼會怎樣。抱歉,現在的重要客戶端程序瀏覽器根本無法正常工作。因為瀏覽器的動作,是建立在完全理解HTTP響應狀態碼之上。也就是說,正是有了HTTP響應狀態碼,才有了如今的瀏覽器。在HTTP協議中,一次HTTP請求,可能會出現有多種服務端行為。比如伺服器找不到請求資源、處理過程出現異常等等,每一種行為都是相對其他行為獨立互斥的,並且都需要通知客戶端程序。如果客戶端程序無法理解服務端本次響應行為的目的,那怎麼進行下一步動作?而這個結果,最終會通過瀏覽器呈現給用戶。到那時,用戶也只能猜測服務端行為的目的,進行費時費力的操作。這應該不是誰想見到的。所以HTTP狀態碼的出現,就是讓客戶端程序能夠更好的理解服務端響應行為的目的,從而更好地進行下一個動作。

既然客戶端程序是通過HTTP響應狀態碼,理解服務端行為目的。那麼服務端程序,如何知道客戶端程序想要什麼呢?這個留給讀者思考吧。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 夜說時間魚 的精彩文章:

TAG:夜說時間魚 |