最近在開發過程中遇到了axios不能發送json的問題,這讓我很困惑。在網絡上搜索了很久也沒有找到合適的解決方法,于是我決定自己調試代碼。經過嘗試,我終于找到了原因。
首先,我們需要明確,axios發送請求時默認會將數據轉換為form-data格式,而不是JSON格式。如果我們想要發送JSON格式的數據,則需要手動設置axios的Content-Type頭信息為application/json。具體的代碼如下:
axios.defaults.headers.post['Content-Type'] = 'application/json'; axios.post(url, data, config);
但是,即使我們設置了Content-Type頭信息為application/json,axios在發送請求時仍然會自動將數據轉換為form-data格式,并且將JSON格式的數據轉換為字符串。這是因為axios內部使用了qs庫來處理數據,而qs庫默認將數據轉換為form-data格式。因此,我們需要手動設置qs庫的參數序列化方式為JSON格式。具體的代碼如下:
import qs from 'qs'; axios.defaults.headers.post['Content-Type'] = 'application/json'; axios.post(url, qs.stringify(data, { format: 'json' }), config);
通過手動設置qs庫的參數序列化方式為JSON格式,我們就成功地解決了axios不能發送JSON格式數據的問題。
上一篇get接口vue
下一篇axios傳json對象