vue中axios拦截器的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39378691/article/details/83750056
1.拦截器分为request请求拦截器和response响应拦截器

PS:request请求拦截器:发送请求前统一处理,如:设置请求头headers、应用的版本号、终端类型等。
response响应拦截器:有时候我们要根据响应的状态码来进行下一步操作,例如:由于当前的token过期,接口返回401未授权,那我们就要进行重新登录的操作。

2.main.js文件中(先安装axios)

在这里插入图片描述

import axios from 'axios'
// 给Vue函数添加一个原型属性$axios指向axios(全局使用axios)
// vue实例中直接用this.$axios就可以执行axios方法
Vue.prototype.$axios=axios
3.http request 请求拦截器

PS:发送请求之前判断是否存在token,除了登录页,其他页面请求头headers都添加token

// http request 请求拦截器
axios.interceptors.request.use(config => {
	// 在发送请求之前做些什么
	let pathname = location.pathname;
	if(localStorage.getItem('token')){
		if(pathname != '/' &&  pathname != '/login'){
			config.headers.common['token'] = localStorage.getItem('token');
		}
	}
	return config;
}, error => {
	// 对请求错误做些什么
	return Promise.reject(error);
});

在这里插入图片描述

4.http response 响应拦截器

PS:若返回401,页面跳转到登录页面

// http response 响应拦截器
axios.interceptors.response.use(response => {
 	return response;
},error => {
 	if (error.response) {
		switch (error.response.status) {
			// 返回401,清除token信息并跳转到登录页面
			case 401:
			localStorage.removeItem('token');
			router.replace({
				path: '/login'
				//登录成功后跳入浏览的当前页面
				// query: {redirect: router.currentRoute.fullPath}
			})
		}
		// 返回接口返回的错误信息
		return Promise.reject(error.response.data);
	}
});

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39378691/article/details/83750056