axios传参时遇到network下查看不到get请求时的入参

2,213 阅读1分钟
axios封装别名时的传参问题

个人习惯在写vue项目的时候标配vue全家桶。再一次axios做get请求时,发现在浏览器中network下看不到我的入参参数

我的的入参代码如下:

    THIS.$axios.get(url, {      agentCode: '11111111'    }).then(res => {      if (res.errCode === 0) {        THIS.acheiveMentData = res.data      }    })

带着这个疑问去翻开项目搭建的axios的请求的js文件,封装如下:


看上去是没问题。哎!往往是看上去没问题的地方就会存在问题。果不出所料查阅axios的官方文档中有如下表示:


意思就是说,get请求中的参数只能传两个,第二个为可选参数,必须为对象的形式。于是修改axios的封装的get方法。代码如下:


在network中就可以查看


不仅能查看到Query String Parameters能看到自己的入参,也会自动拼接到url地址上面。

axios的源码中对方法的别名处理如下:


他是在node_modules下的axios中lib->core->Axios.js中。可以看到在对delete、get、head、options等的别名方法处理时,只有两个参数:url、config。在对post、put、patch等别名方法处理时的参数是三个:url、data、config。

另一种改法如下:

组件内调用

this.$axios.get(url, {
    params: {
        agentCode: '111111'
    }
}).then(res => {/*做些事情*/})

封装时的修改:

instance.get(url, parames).then((response) => {
    resolve(response)
}).catch((error) => {
    reject(error)
})

axios在0.18.0版本中get方法传入三个参数是可以的,在0.19.0版本中不允许传入三个,所以才出现上述问题。