使用 qs 库 ( 请先执行 yarn add qs ) 结合 axios 自带的 paramsSerializer 方法序列化参数:
import axios from 'axios';
import qs from 'qs';
const instance = axios.create({
baseURL,
timeout: 30000,
withCredentials: true,
});
instance({
method,
url,
params, // url 参数
paramsSerializer: params => qs.stringify(params, { arrayFormat: 'comma' }),
})
qs.stringify 支持转换成以下四种格式, 后台只需要用 Array 接收对应参数就可以了
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'
参考: