[摘要]本篇文章给大家带来的内容是关于Vue中使用axios请求拦截的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、前言axios的基础使用就不过多的讲解啦,如何使用可以看ax...
本篇文章给大家带来的内容是关于Vue中使用axios请求拦截的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、前言
axios的基础使用就不过多的讲解啦,如何使用可以看axios文档使用说明·Axios中文说明
在这里和大家分享一下axios拦截在实际项目中的使用
很多人都看过axios的官方文档中拦截器这一栏,有的人可能会有点懵,因为文档只告诉你有这个东西,而不告诉你在什么情况下使用。很多初学者就会放弃使用axios拦截器,毕竟拦截器是可以不使用的,但是使用拦截器,会在页面中减少很多不必要的代码。
二、说在前面的
项目使用的ui框架是iview
以下友好提示均使用iview ui的message提示组件,例如this.$Message.xxx
/api/request 仅仅只是例子接口,实际开发用后台提供的接口。
code是后台状态码,我这里也只是例子,不要问我为毛我的返回码和你的怎么不一样这样的问题哈...这些都需要和后台沟通约定的。
使用的请求头是:axios.defaults.headers['Content-Type']
=
'application/x-www-form-urlencoded';至于为什么使用这个请求头可以看看我的另外一篇文章关于axios会发送两次请求,有个OPTIONS请求的问题
因为使用的是这个请求头所以需要用qs模块,不然后台不认这个数据。
三、不使用请求拦截
如果不使用请求拦截,也是可以的,但是会多了非常多的代码,我们以登录页为例。
一个单纯,没有花里胡哨的页面, ω?)
//双向数据绑定获取值
let httpRequest = {};
httpRequest.loginName = this.loginName
httpRequest.password= this.password
this.$axios.post("/api/request", this.$qs.stringify(httpRequest)).then(data => {
//特殊错误处理,状态为10时为登录超时
if(data.data.code === 10){
this.$Message.error("登录已超时,请重新登录")
this.$router.push("/login")
//其余错误状态处理
}else if(data.data.code != 0){
this.$Message.error(data.data.msg)
//请求成功
}else if(data.data.code === 0){
//进行成功业务逻辑
}
//.......
});