由于get
请求中有一个日期参数 dates
是一个数组类型。
未处理参数时请求地址是这样的:/api/list?page=1&pageSize=10&keyWord=&dates[]=2024-06-10&dates[]=2024-06-24
会发现dates后面有中括号,所以前端需要将参数格式处理变成如下:/api/list?page=1&pageSize=10&keyWord=&dates=2024-06-10&dates=2024-06-24
利用参数paramsSerializer,传递一个参数处理函数
ts
import axios from 'axios'
const instance = axios.create({});
const { data } = await instance({
url: '/records',
method: 'GET',
params,
// 序列化参数
paramsSerializer: function (params) {
let str: string[] = [];
for (let key in params) {
// console.log('item', key);
if (key === 'createdDates') {
params[key]?.length &&
str.push(...[`${key}=${params[key][0]}`, `${key}=${params[key][1]}`]);
} else {
str.push(`${key}=${params[key]}`);
}
}
return str.join('&');
},
});