緣由是沒有對參數進行序列化node
默認狀況下,axios將JavaScript對象序列化爲JSON。 要以應用程序/ x-www-form-urlencoded格式發送數據。ios
在攔截器前修改npm
方法一,用原生js序列化參數axios
// 建立axios實例 const service = axios.create({ baseURL: process.env.BASE_API, // api 的 base_url timeout: 30000, // 請求超時時間 transformRequest: [function(data) { const str = [] for (const i in data) { str.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])) } return str.join('&') }] })
方法二,用qs序列化參數api
//npm install axios的時候默認會安裝qs // qs相關的問題請搜索"nodejs qs"或者看這裏https://www.npmjs.com/package/qs import qs from 'qs'; const service = axios.create({ baseURL: process.env.BASE_API, // api 的 base_url timeout: 30000, // 請求超時時間 transformRequest: [ function(data) { return qs.stringify(data, { arrayFormat: 'brackets' }) } ] })
網上方案說要加app
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
我沒有加,由於我發現默認axios的post就是x-www-form-urlencoded。post
到此,這個問題解決了url