前言:
最近持續(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ù)。如下圖所示:

狀態(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:

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

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é)商緩存(對比緩存)。

強(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 刪除