问题:
get 请求传递参数的类型为数组或对象时,请求会报错。
/list?pageNum=1&pageSize=10¶ms=%7B%22beginCreateTime%22:%22%22,%22endCreateTime%22:%22%22,%22beginUpdateTime%22:%22%22,%22endUpdateTime%22:%22%22%7D
解决方式:
== 引用qs插件,在axios配置
vue 方式:安装Qs插件命令:npm install qs
在 request拦截器 页面引入
import Qs from ‘qs’
// request拦截器
service.interceptors.request.use(config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
//只针对get方式进行序列化
if (config.method === 'get') {
config.paramsSerializer = function(params) {
return Qs.stringify(params, { arrayFormat: 'indices' })
}
}
return config
}, error => {
console.log(error)
Promise.reject(error)
})
qs 插件参数说明
1、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
// 输出结果:'a[0]=b&a[1]=c'
2、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 输出结果:'a[]=b&a[]=c'
3、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 输出结果:'a=b&a=c'
4、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
// 输出结果:'a=b,c'
示例入参为params对象
参考:https://www.cnblogs.com/kingreatwill/p/12641238.html#/cnblog/works/article/12641238