赞
踩
/**axios封装 * 请求拦截、相应拦截、错误统一处理 */ import axios from 'axios' import { MessageBox } from 'element-ui' import 'core-js'; import promiseFinally from 'core-js/features/promise/finally'; if(!window.Promise.prototype['finally']){ window.Promise.prototype['finally'] = promiseFinally; } const axiosService = axios.create({ baseURL: '/api/manage', // url = base url + request url headers: { 'Cache-Control': 'no-cache, no-store', 'Pragma': 'no-cache' }, timeout: 6 * 60 * 1000 // 超时时间 }) // request interceptor axiosService.interceptors.request.use( config => { const separator = config.url.indexOf('?') === -1 ? '?' : '&'; config.url = config.url + separator +"noCache="+new Date().getTime();//防止浏览器缓存 return config }, error => { return Promise.reject(error) } ); let messageInstance = null; const resetMessage = (params) => { if(messageInstance) { if(messageInstance.close) messageInstance.close() } messageInstance = MessageBox({ title: params.title, type: params.type, message: params.message, confirmButtonText: '确定', callback: () => { if(params.callback){ console.log(params); params.callback() } } }) } // response axiosService.interceptors.response.use( response => { const data = response.data if(data.code == 410){ //未登录,跳转登录页 resetMessage({ title:'登录超时', type:'warning', message: data.msg, callback: () => { window.history.pushState({},'','/login'); } }) return data; } else if(data.code == 401){ //无权限 window.history.pushState({},'','/401'); return data; } else if(data.code !== 200){ resetMessage({ title:'错误', type:'error', message: data.msg, callback: () => { } }) return Promise.reject(new Error(data.msg)) } else { return data; } }, error => { resetMessage({ title:'错误', type:'error', message: error.message, callback: () => { // window.history.pushState({},'','/login'); } }) return Promise.reject(error); } ) const axiosPromiseFinally = require('promise.prototype.finally'); axiosPromiseFinally.shim(); export default axiosService
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。