Hello mojito.關(guān)于http,這些常(hao)見(xiao)的(hua)你了解多少?http狀態(tài)碼,http常見header,http緩存機(jī)制。

前言:

最近持續(xù)學(xué)習(xí),計劃每天可以記錄更新一篇。這次http花了三天時間有余,斷斷續(xù)續(xù),今天終于擼完。每天的英語口語練習(xí),堅持長跑。累并快樂著。借用一段英文與各位猿友共勉:If we are facing in the right direction,all we have to do is keep on walking.

一. http狀態(tài)碼分類及常見狀態(tài)碼有哪些?

你是否在開發(fā)中,面對請求狀態(tài)碼,一臉懵逼,傻傻分不清。不能通過狀態(tài)碼判斷是前端錯誤還是后臺錯誤。快速搞定http狀態(tài)碼,幫你快速定位問題,背鍋甩鍋心中有數(shù)。覽器F12,開發(fā)者工具。點(diǎn)擊Network,顯示當(dāng)前資源所有的請求,可選項卡切換查詢xhr,js,css,img等特定類型資源的請求數(shù)據(jù)。如下圖所示:

states.png

狀態(tài)碼分類

 1xx:服務(wù)器收到請求        
 2xx:請求成功
 3xx:重定向
 4xx:客戶端錯誤
 5xx:服務(wù)端錯誤 

常見狀態(tài)碼及對應(yīng)場景,注意此為常見。

1xx 服務(wù)器收到請求,此狀態(tài)前端不需關(guān)注
200 請求成功
301 永久重定向,曾經(jīng)的網(wǎng)站域名到期或者想更換域名。a.com要更換為b.com,只要訪問a.com,都會重定向跳轉(zhuǎn)到b.com
302 臨時重定向,
304 資源未被修改,使用本地緩存資源。
404 not fuound,后臺未找到資源。悄悄滴,自覺滴檢查url 參數(shù)拼寫是否正確
403 一般情況為沒有權(quán)限。未登錄想獲取用戶信息或者沒有角色權(quán)限,想獲取更高級別信息
500 服務(wù)錯誤。后臺代碼,宕機(jī)等。淡定、堅定的找后臺
504 網(wǎng)關(guān)超時。淡定、堅定的找后臺

二. http常見的header有哪些?

Request Headers:

request.png

1.Accept:瀏覽器可接受的數(shù)據(jù)格式。application/json,text/html等
2.Accept-Econding:瀏覽器可接受的數(shù)據(jù)壓縮(資源變小,傳輸更快呀)算法。gzip,deflate,br
3.Accept-Language:瀏覽器可接受的語言。如:zh-CN,zh;q=0.9
4.Connection:keep-alive 一次TCP連接,重復(fù)使用
5.Cookie:緩存
6.Host:請求域名
7.User-Agent:瀏覽器信息。收集瀏覽器、系統(tǒng)、手機(jī)等信息
8.Content-type:發(fā)送數(shù)據(jù)格式。如application/json、text/html

Response Headers

response.png

1.Content-type:返回數(shù)據(jù)的格式。如:image/gif,text/html; charset=utf-8
2.Content-length:返回數(shù)據(jù)大小,多少字節(jié)。
3.Content-Econding:返回數(shù)據(jù)的壓縮算法。如:gzip   
4.Set-cookie:服務(wù)端像客戶端設(shè)置cookie。
5.expires:過期時間,已被Cache-control代替。
6.Cache-control:控制強(qiáng)緩存的邏輯,服務(wù)端控制。常用屬性有
   a:max-age:(最大過期時間):3153600(s)
   b:no-cache:不使用本地緩存
   c:no-store:不使用本地緩存,也不使用服務(wù)端緩存策略,即完全重新請求資源
7.Last-modified:協(xié)商緩存策略,資源的最后修改時間,只能精確到秒級,可以與Etag共存。與Request headers,If-Modified-Since值相同。詳情參考http緩存機(jī)制
8.Etag:協(xié)商緩存策略,字符串,根據(jù)內(nèi)容計算的資源的唯一標(biāo)識。與Request headers,If-None-Match值相同。詳情參考http緩存機(jī)制

三. http緩存機(jī)制

為什么要緩存:減少請求資源數(shù)量和體積,提高網(wǎng)頁加載速度。按緩存規(guī)則可分為:強(qiáng)制緩存和協(xié)商緩存(對比緩存)。

http緩存機(jī)制.png

強(qiáng)制緩存:

瀏覽器初次請求,服務(wù)器判定請求資源可以緩存,則添加相應(yīng)的Catch-control,類似不容易更改的資源。如:js/css/img等。瀏覽器再次請求,通過判斷Catch-control屬性值,如果命中緩存,則在本地直接讀取緩存。

協(xié)商緩存:

瀏覽器初次請求,服務(wù)器判定請求資源可以緩存,同時返回相應(yīng)的資源標(biāo)識,Etag/Last-Modified??蛻舳嗽俅握埱髸r,攜帶If-None-Match/If-Modeifed-Since,服務(wù)端根據(jù)與原有值判斷,資源是否發(fā)生更改,如更改則返回新的資源,否則返回304,客戶端讀取本地緩存。

四. 什么是Restful API

1.一種新的API設(shè)計方法
2.傳統(tǒng)API設(shè)計:把每個url當(dāng)做一個功能          
3.Restful API設(shè)計:把每個url當(dāng)做一個唯一的資源,通過不同的請求方法區(qū)分增刪改查。                                     

傳統(tǒng)API示例:

post          api/create-article                      創(chuàng)建                 
post          api/update-article?author=1454648       更新/刪除
get           api/get-article?author=1454648          查詢

Restful API示例:

post           api/create-article                     創(chuàng)建           
patch/put      api/article/1454648                    部分更新/全部更新
get            api/article/1454648                    查詢
delete         api/article/1454648                    刪除
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容