get方法傳參數組的時候,會出現arr[]=1&arr[]=2這樣的情況,這樣的傳參,后端是接收不到的,無法解析。
那么我們就需要轉換成這樣的格式:arr=1&arr=2
1、這里,需要安裝一個插件----qs插件(詳情參考:https://github.com/ljharb/qs)
在vue項目中yarn add qs即可。
2、在攔截器文件中引入
import qs from 'qs'
3、在你自己的項目的axios攔截器中,加入下代碼:
// request interceptor service.interceptors.request.use( config => { // do something before request is sent if (store.getters.token) { config.headers['token'] = store.getters.token } // get方法傳遞數組的處理(重點代碼) if (config.method === 'get') { config.paramsSerializer = function(params) { return qs.stringify(params, { arrayFormat: 'repeat' }) } } return config }, error => { // do something with request error console.log(error) // for debug return Promise.reject(error) } )
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) // 'a[0]=b&a[1]=c' qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) // 'a[]=b&a[]=c' qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) // 'a=b&a=c' qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' }) // 'a=b,c'