1代码如下:
import axios from 'axios'
import store from '../store'
const instance = axios.create({
baseURL: '/api', // 通过使用配置的proxy来解决跨域
timeout: 5000
});
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
let token = localStorage.getItem("x-auth-token");
if (token) {
config.headers = {
"x-auth-token": token
}
}
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response.data;
}, function (error) {
if (error.response.data.errCode === 1002) {
// token过期,先告诉用户登录失效,并重新登录
store.dispatch({
typr: 'showAlert', value: {
alertType: 'error',
alertContent: '登录失效,即将跳转登录页'
}
})
setTimeout(() => {
// 关闭alert弹框
store.dispatch({ type: 'hideAlert' });
// 跳转登录页,开发阶段都是在locahast:8080根路径下开发,所以可以用window.location.href='/login',
// window.location.href='/login'
// 项目上线,由于路由模式改成啦HashRouter。所以应该修改的是hash值
window.location.hash = '#/login'
}, 2000)
}
// 对响应错误做点什么
return Promise.reject(error);
});
// deng登录过期与token过期
export default instance;
1.token失效验证:在响应拦截器的错误回调中编写逻辑
if (error.response.data.errCode === 1002) {
// token过期,先告诉用户登录失效,并重新登录
清空token
// window.location.href='/login'
// 项目上线,由于路由模式改成啦HashRouter。所以应该修改的是hash值
//跳转到首页
window.location.hash = '#/login'
}
2.在请求拦截器成功回调中加token
let token = localStorage.getItem("x-auth-token");
if (token) {
config.headers = {
"x-auth-token": token
}
}
3axios传参
get传参
export const GetloginApi=(params)=>requset.get('/usrer/home' ,{params})
post传参
export const PostloginApi=(params)=>requset.post('/usrer/home' ,params)