前言

之前一直感覺斷點(diǎn)續(xù)傳比較神秘,于是想去一探究竟,不知從何入手,以為就寫寫邏輯就行,結(jié)果搜索一番,還得了解相關(guān)http協(xié)議知識(shí),又花了許久功夫去看http協(xié)議中有關(guān)斷點(diǎn)續(xù)傳知識(shí),有時(shí)候發(fā)覺東西只有當(dāng)你用到再去看相關(guān)內(nèi)容時(shí)才會(huì)掌握的更加牢固,理解的更加透徹吧,下面我們首先來補(bǔ)補(bǔ)關(guān)于http協(xié)議中斷點(diǎn)續(xù)傳的知識(shí)。

http協(xié)議知識(shí)惡補(bǔ)

當(dāng)請(qǐng)求一個(gè)html頁(yè)面時(shí)我們會(huì)看到請(qǐng)求頁(yè)面如下:

第一眼看到上面Accept中的參數(shù)時(shí)我是懵逼的,之前也就看看緩存cookie等常見的頭信息,于是借此機(jī)會(huì)也學(xué)習(xí)下這部分內(nèi)容。

我們知道Accept是指客戶端允許請(qǐng)求返回的內(nèi)容類型,那為何這里面參數(shù)有如此之多呢?在學(xué)習(xí)WebAPi時(shí),我們?cè)诜?wù)端未進(jìn)行過濾時(shí)既可以返回xml,也可以返回json,此時(shí)如上圖一樣,text/html未匹配上,接著匹配xml類型,匹配后則進(jìn)行相應(yīng)格式內(nèi)容返回,所以客戶端接受如此多類型內(nèi)容,也是為了服務(wù)端那邊未設(shè)置特定內(nèi)容響應(yīng),此時(shí)則根據(jù)客戶端設(shè)置的內(nèi)容進(jìn)行最合適的匹配。

那么問題來了,上面的q是啥玩意?

q(quality)

上面給出了客戶端能夠接受響應(yīng)的內(nèi)容類型,自然就有最合適的匹配,此時(shí)就用到了q這個(gè)參數(shù),在此我將q翻譯為quality即權(quán)重的意思,應(yīng)該是比較合適的,它用來表示我們期待接受內(nèi)容偏愛的程度即所占的權(quán)重。它的范圍是0-1,其默認(rèn)值為1,這就類似質(zhì)檢部門對(duì)產(chǎn)品合格判斷的一種介質(zhì)。例如當(dāng)我們需要返回視頻資源時(shí),我們客戶端設(shè)置為如下:

Accept: audio/*; q=0.2, audio/basic

此時(shí)我們將上述翻譯如下:

audio/basic; q=1 audio/*; q=0.2

我們更加期待返回的是audio/basic類型的資源,因?yàn)槠錂?quán)重為1大于audio/*類型的資源,若為匹配到則繼續(xù)匹配下一個(gè)資源,audio/*則表示屬于audio類型的所有子類型資源。

接下來,我們?cè)賮砜匆粋€(gè)例子:

Accept: text/plain; q=
        
		

網(wǎng)友評(píng)論