在使用axios發(fā)送請(qǐng)求時(shí),我們需要向服務(wù)器傳遞參數(shù)。然而,有些開(kāi)發(fā)者可能會(huì)發(fā)現(xiàn),使用axios傳遞參數(shù)時(shí)只能傳遞JSON格式的數(shù)據(jù)。
axios.post(url, {data})
如果你試圖像下面這樣傳遞非JSON格式的數(shù)據(jù),就會(huì)出現(xiàn)錯(cuò)誤:
axios.post(url, 'data')
那么,為什么axios只能傳遞JSON格式的數(shù)據(jù)呢?這是因?yàn)閍xios是一個(gè)基于XMLHttpRequest封裝的HTTP庫(kù),而在HTTP協(xié)議中,只支持傳輸文本和二進(jìn)制類型的數(shù)據(jù)。
因此,為了傳遞非文本類型的數(shù)據(jù),我們需要將它們轉(zhuǎn)換為文本類型的數(shù)據(jù)。JSON就是一種輕量級(jí)的文本數(shù)據(jù)交換格式,適合在客戶端和服務(wù)器之間傳遞結(jié)構(gòu)化數(shù)據(jù)。
雖然axios只支持JSON格式的數(shù)據(jù)傳遞,但這并不意味著我們無(wú)法傳遞其他格式的數(shù)據(jù)。我們只需要將數(shù)據(jù)轉(zhuǎn)換為JSON格式,然后在服務(wù)器端進(jìn)行解析即可。
let formData = new FormData(); formData.append('file', file); let json = { file: file }; axios.post(url, JSON.stringify(json)) axios.post(url, formData)
上面的代碼演示了如何使用axios傳遞文件。我們將文件數(shù)據(jù)轉(zhuǎn)換為FormData類型和JSON類型,然后使用JSON.stringify()方法將JSON類型數(shù)據(jù)轉(zhuǎn)換為JSON格式字符串,再傳遞給服務(wù)器。
總的來(lái)說(shuō),雖然axios只能傳遞JSON格式的數(shù)據(jù),但我們可以通過(guò)轉(zhuǎn)換數(shù)據(jù)類型的方法,實(shí)現(xiàn)其他類型數(shù)據(jù)的傳遞。