我希望前端可以通过url传递嵌套的对象,如
axios({
url: '/api/user/list',
method: 'get',
params: {
username: 'zs',
helpParam: {
beginCreateTime: '2025-06-26',
endCreateTime: '2025-06-28'
}
}
})
这个helpParam是帮我传递一些不定参数的对象,但是这样写实际上会被转化为/api/user/list?username=zs&helpParam[beginCreateTime]=2025-06-26&helpParam[endCreateTime]=2025-06-28,
但是url是不支持[]
这种字符的
代码解决方案
下载qs,配置参数到url的序列化(qs.stringify()将对象转为url形式,qs.parse()将url字符串转为对象形式)
npm i qs
或者
cnpm i qs
或者
yarn add qs
引入qs,配置paramsSerializer
import axios from "axios";
import qs from 'qs';
sendParamsRequest() {
axios({
url: '/api/user/list',
method: 'get',
paramsSerializer: function (params) {
return qs.stringify(params, { indices: false })
},
params: {
username: 'zs',
helpParam: {
beginCreateTime: '2025-06-26',
endCreateTime: '2025-06-28'
}
}
})
}
手动输入url解决方案
[]想要出现在url中,需要进行url编码,%作为转移符号,[ -> 5B ,] -> 5D,
测试网址:在线url网址编码、解码(ES JSON在线工具)
因此之前的url可以写为
/api/user/list?username=zs&helpParam%5BbeginCreateTime%5D=2025-06-26&helpParam%5BendCreateTime%5D=2025-06-28
完整的url
http://localhost:8080/user/list?username=zs&helpParam%5BbeginCreateTime%5D=2025-06-26&helpParam%5BendCreateTime%5D=2025-06-28
这样写是可以被浏览器输入栏输入的