HTTP協議是超文本傳輸協議的縮寫,英文是Hyper Text Transfer Protocol。超文本就是一種資源的表述,它(HTML)是從WEB服務器傳輸到本地瀏覽器用於展現。
restful架構,它是http設計師所遵循的架構。全稱爲:REpresentational State Transfer,翻譯過來就是:表現層狀態轉移。用@Ivony老師的一句話歸納就是:html
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操做。git
它也是在描述資源狀態的一種轉移。因爲一種資源有着多種狀態,因此客戶端在接收一種資源的轉移時是須要進行協商的。好比在中國訪問一個url時是接收的資源多是中文的,而在其餘國家訪問同一個url時得到的資源多是他們國家的語言。github
每一個URL指向的資源能夠是任何事物,能夠有多種不一樣的表述,例如一份文檔能夠有不一樣語言的翻譯、不一樣的媒體格式、能夠針對不一樣的瀏覽器提供不一樣的壓縮編碼等web
Accept-Language:en表示客戶端要求URI是中文的;
Accept-Encoding:br表示客戶端能夠接受br類型的壓縮方式。算法
而服務端接收到客戶端的要求後,會返回符合要求的響應。瀏覽器
質量因子q:內容的質量、可接受類型的優先級
一、內容質量。舉例,客戶端發起一個圖片的請求,這個圖片只供快速瀏覽用的,那麼就能夠作很是高的壓縮比,這時的質量q就能夠比較低。若是這個圖片用做醫學的,那麼q就比較大,由於不能容忍醫用照片模糊以損失大量的細節。
二、可接受類型的優先級。舉例:有一個URI即支持中文,又支持英文。可是但願優先顯示中文,就能用q來表示。服務器
媒體資源的MIME類型及質量因子
一、Accept: text/html, application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
二、Axxept: text/html, application/xhtml+xml,application/xml;1=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3restful
內容編碼:主要指壓縮算法
Accept-Encoding: gzip. deflate, br架構
表述語言
一、Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
二、Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2app
內容協商將決定服務器端生成不一樣的HTTP響應體傳輸給客戶端。
更多文章請移步樓主github,若是喜歡請點一下star,對做者也是一種鼓勵