axios的content-type是自動設置的
- 2022 年 8 月 27 日
- 筆記
- Axios, axios傳參方式, axios自動添加請求頭, content-type
一. axios參數的傳遞方式
首先我們要知道 參數傳遞一般有兩種,一種是 使用 params, 另一種是 data的方式,有很多的時候我們看到的前端代碼是這樣的。
1. get請求:
axios({ method: 'GET', url: 'xxxxx', params: params, }) 或者 axios({ method: 'GET', url: '/xxx?id=' + xxx, })
2. post請求
axios({ method: 'POST', url: '/xxxxx', data: params, }) 或者 axios({ method: 'POST', url: '/xxxxx', params: params, })
3. params 的形式的傳參 參數會被拼接到url上面(params 是查詢參數,拼在 URL 問號後面的) 如下圖:

4. data形式傳參, axios會自動處理設置Content-Type不需要手動設置

(1) 比如發送一個下面的請求, 會發現請求頭的content-type是application/json;charset=UTF-8
axios({ url: '/login', method: 'post', data: {email: 'xxxx', password: 123123} })
(2) 比如發送一個上傳文件的請求formdata, 會發現請求頭的content-type是multipart/form-data
let formData = new FormData() formData.append('file', file) axios({ url: '/login', method: 'post', data: formData })
二 . 查看axios源碼, 對比 data和params兩種參數處理方法
1. 處理data
在axios文件中 的 core/dispatchRequest.js 中:

在 axios 的 default.js 中,有一個函數專門轉換 data 參數的 :

注意: 上面只是舉例 data 傳遞參數的一種情況哈!其實data 也有在地址欄 上 拼接的情況,或者 是文件上傳的等情況。太多了,這裡 只是講清楚使用的方式。
2. 處理 params
在axios文件中 的 adapt/ xhr.js 中,我們可以看到 :

buildUrl 一些關鍵代碼如下 :

參考鏈接 : //blog.csdn.net/qq_41499782/article/details/118916901
//segmentfault.com/q/1010000018679505?utm_source=sf-similar-question
//segmentfault.com/q/1010000040731240


