axios发起post请求,url后⾯的参数⾃动拼接到RequestURL上最近遇到⼀个神奇的bug,当通过路由query传参跳转到新的页⾯时,新页⾯请求接⼝的Request URL后⾯⾃动拼接上了query传参
具体如下:
跳转路由是这样的
let path = "********";
this.$router.push({path:path,query:{keyWord:"零⾷"}})
跳转到新的页⾯后新页⾯所有请求接⼝的地址
api.*********/?g=home_v2&m=taobaoInt&a=search&keyWord=零⾷
默认请求接⼝的地址
api.*********/?g=home_v2&m=taobaoInt&a=search
可以很明显的看到路由query传参到的页⾯的接⼝地址被强⾏增加了keyWord关键字,就是这个关键字导致接⼝失效。
经过查看Axios说明⽂档发现可以在请求发送之前进⾏拦截,于是将请求打印出来
// 添加请求
quest.use(function (config) {
// 在发送请求之前做些什么
console.log(config);
return config;
}, function (error) {
// 对请求错误做些什么
ject(error);
});
经过对⽐发现query传值时,请求会⾃动加上params参数react router 传参
axios默认⽤get传值时⽤params传参,⽤post传值时,⽤data传参,就是⽤post传值时,url参数影响了请求地址⾃动加上了params
因此需要在请求开始时做⼀个拦截就好了
1 quest.use((request) => {
2    console.log(request);
3 hod == 'post'){
4      request.params = {};
5    }
6return request;
7 });

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。