import axios from 'axios';
import qs from 'qs';
import { Message } from 'element-ui';
const proxyserver = 'proxyserver';
// axios 配置proxy
// axios.defaults.timeout = 10000;
axios.defaults.headers.post['data-Type'] = 'json';
axios.defaults.headers.post['Content-Type'] =
'application/x-www-form-urlencoded;charset=UTF-8';
// axios.defaults.baseURL = 'http://localhost:8080';
// POST传参序列化
axios.interceptors.request.use(
config => {
if (config.method === 'post') {
config.data = qs.stringify(config.data);
// config.data = config.data;
}
config.headers.auid = sessionStorage.auid || 1000;
config.headers.access_token = sessionStorage.access_token || 1;
return config;
},
error =>
// _.toast("错误的传参", 'fail');
Promise.reject(error)
);
// 返回状态判断
axios.interceptors.response.use(
res => {
if (res.status !== 200) {
let info = '系统异常';
alert(JSON.stringify(res));
switch (res.status) {
case 201:
info = res.message || '参数格式错误';
break;
case 202:
info = res.message || '登录失效';
break;
case 203:
info = res.message || '无数据';
break;
case 204:
info = res.message || '不支持请求';
break;
case 403:
info = res.message || '登陆超时';
break;
case 500:
info = res.message || '程序异常';
break;
}
Message.error(info);
return Promise.reject(res);
}
return res;
},
error => {
let message = '系统异常';
if (
error &&
error.response &&
error.response.data &&
error.response.data.message
) {
message = error.response.data.message;
}
Message.error(message);
return Promise.reject(error);
}
);
export function param(data) {
let url = '';
for (const k in data) {
const value = data[k] !== undefined ? data[k] : '';
url += `&${k}=${encodeURIComponent(value)}`;
}
return url ? url.substring(1) : '';
}
export function fetch(url, params) {
return new Promise((resolve, reject) => {
axios
.post(url, params)
.then(
response => {
resolve(response.data);
},
err => {
if (err.code === 'ECONNABORTED') {
Message.error('请求超时!');
} else if (err.data && err.data.msg) {
Message.error(err.data.msg);
} else {
let message = '系统异常';
if (
error &&
error.response &&
error.response.data &&
error.response.data.message
) {
message = error.response.data.message;
}
Message.error(message);
}
reject(err);
}
)
.catch(error => {
reject(error);
});
});
}
export function fetchPut(url, params) {
return new Promise((resolve, reject) => {
axios
.put(url, params)
.then(
response => {
resolve(response.data);
},
err => {
if (err.code === 'ECONNABORTED') {
Message.error('请求超时!');
} else if (err.data && err.data.msg) {
Message.error(err.data.msg);
} else {
let message = '系统异常';
if (
error &&
error.response &&
error.response.data &&
error.response.data.message
) {
message = error.response.data.message;
}
Message.error(message);
}
reject(err);
}
)
.catch(error => {
reject(error);
});
});
}
export function fetchGet(url, params) {
return new Promise((resolve, reject) => {
axios
.get(url, {
params
})
.then(
response => {
resolve(response.data);
},
err => {
reject(err);
}
)
.catch(error => {
reject(error);
});
});
}
export function fetchDelete(url, params) {
return new Promise((resolve, reject) => {
axios
.delete(url, {
params
})
.then(
response => {
resolve(response.data);
},
err => {
reject(err);
}
)
.catch(error => {
reject(error);
});
});
}
export default {
login: params => {
return fetch('/proxyserver/auth/login', params); //登录
},
menus: params => {
return fetchGet('/proxyserver/auth/web/menus', params); //菜单
}
};
vue 中 axios 的全局封装
最新推荐文章于 2024-06-29 00:40:34 发布