注:默认已经install与引入qs
1.POST
- 一 .json请求,那么就不需要修改什么。
- 二.form-data或x-www-form-urlencoded请求:
可以在发送请求的时候加上:
this.axios({
url:'请求地址',
method:'post',
data: {'key':'值'},
transformRequest: [data => {
return this.qs.stringify(data)
}]
})
或者可以在拦截器里加上(当然要在拦截器文件处引入qs)
axios.interceptors.request.use(
config => {
config.data = qs.stringify(config.data)
return config
},
error => {
}
)
- 三.post携带数组:
只需对qs语句进行修改
qs.stringify(config.data, { arrayFormat: 'repeat', allowDots: true })
2.GET
携带数组传参:
this.axios({
url:'请求地址',
method: 'get',
params: {
paramArr:['1','2']
},
paramsSerializer: params => {
return this.qs.stringify(params, { indices: false })
}
})
关键在于用paramsSerializer进行序列化。
- 2022.5.19 补充说明
如遇到传递数组的参数形式如:
const params = {
thisArr: '1,2,3' //[1,2,3]
}
如果使用的是axios作为请求库,那么这样直接传参是不行的。因为,
会被再次编码成%252c
而非%2c
,这种情况可以直接在路径上进行参数的拼接
即可,例如:
http://test/api?thisArr=1,2,3