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版本中不允许传入三个,所以才出现上述问题。