axios发起post请求,url后面的参数自动拼接到Request URL上

最近遇到一个神奇的bug,当经过路由query传参跳转到新的页面时,新页面请求接口的Request URL后面自动拼接上了query传参html

具体以下:ios

跳转路由是这样的axios

let path = "********";
this
.$router.push({path:path,query:{keyWord:"零食"}})

 

跳转到新的页面后新页面全部请求接口的地址api

https://api.*********.com/?g=home_v2&m=taobaoInt&a=search&keyWord=零食

 

默认请求接口的地址post

https://api.*********.com/?g=home_v2&m=taobaoInt&a=search

能够很明显的看到路由query传参到的页面的接口地址被强行增长了keyWord关键字,就是这个关键字致使接口失效。this

通过查看Axios说明文档发现能够在请求发送以前进行拦截,因而将请求打印出来url

// 添加请求拦截器
axios.interceptors.request.use(function (config) { // 在发送请求以前作些什么
 console.log(config); return config; }, function (error) { // 对请求错误作些什么
    return Promise.reject(error); });

 

通过对比发现query传值时,请求会自动加上params参数spa

axios默认用get传值时用params传参,用post传值时,用data传参,就是用post传值时,url参数影响了请求地址自动加上了paramscode

所以须要在请求开始时作一个拦截就行了router

1 apiRequest.interceptors.request.use((request) => { 2  console.log(request); 3     if(request.method == 'post'){ 4 request.params = {}; 5 } 6     return request; 7 });

 

原文出处:https://www.cnblogs.com/hz-1762/p/10480274.html

相关文章
相关标签/搜索