基于axios 0.18.1 版本的请求模块封装
import axios from 'axios';
import {
getToken,
removeToken,
getVersion,
getIamFlag,
} from 'msp/utils/auth';
import { Message, MessageBox } from 'element-ui';
import { getStorage, getBrowserLang } from 'msp/utils/localStorage';
import store from 'msp/store/modules/layout.js';
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 50 * 1000,
headers: { 'Cache-Control': 'no-cache' },
});
const logout_address = process.env.VUE_APP_SSO_ADDRESS;
service.interceptors.request.use(
config => {
const token = getToken();
if (token) {
config.headers['Authorization'] = 'Bearer ' + token;
}
config.headers.timestamp = new Date().getTime();
if (getIamFlag() && getVersion() && getVersion() !== 'null') {
config.headers['ssoVersion'] = getVersion();
}
config.headers['Accept-Lang'] = getStorage('lang') || getBrowserLang();
config.headers.langs = getStorage('lang');
return config;
},
error => {
return Promise.reject(error);
}
);
service.interceptors.response.use(
response => {
const errorCodeWhiteList = store.state.customError;
const portStr = response.config.url.split('/')[response.config.url.split('/').length - 1];
const res = response.data;
if (res) {
res.response_headers = response.headers || {};
}
if (response.status === 200 && response.data && response.data.code !== '000000') {
if (errorCodeWhiteList.includes(portStr)) {
return Promise.reject(res);
} else {
if (response.data instanceof Blob) {
if (response.data.type !== 'application/json') {
var obj = {
data: res,
name: response.headers['content-disposition'],
};
return obj;
} else {
return Message({
duration: 1500,
message: '系统异常,请稍后再试',
type: 'error',
});
}
}
Message({
message: response.data.mesg || '系统异常,请稍后再试',
type: 'error',
duration: 2 * 1000,
});
return Promise.reject(res);
}
} else if (response.status !== 200) {
if (response.status == 204) {
} else {
Message({
message: res.mesg || 'Error',
type: 'error',
duration: 5 * 1000,
});
return Promise.reject(new Error(res.message || 'Error'));
}
} else {
return res;
}
},
error => {
if (error && error.response) {
if (
(error.response.status == '401' || error.response.status == '410') &&
window.location.href.indexOf('/login') == -1
) {
removeToken();
const origin = location.origin;
location.href = origin + '/login';
} else if (error.response.status === '301') {
console.log('301');
} else {
if (error && error.response) {
Message({
message: error.response.data.msg || error.response.data.mesg || error.response.data,
type: 'error',
duration: 2 * 1000,
});
} else {
Message({
message: error.message,
type: 'error',
duration: 2 * 1000,
});
return;
}
}
return Promise.reject(error);
} else if (error && error.code === 'ERR_NETWORK') {
Message({
message: '网络异常',
type: 'error',
duration: 2 * 1000,
});
return;
}
}
);
export default service;