import axios from 'axios';
import qs from 'qs';
import { Message, Loading } from 'element-ui';
import store from '@/store';
let baseUrl = '';
let loadingInstance = '';
axios.defaults.baseURL = baseUrl;
axios.defaults.timeout = 10000 // 默认请求超时时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-fform-urlencode;charset=UTF-8';
axios.interceptors.request.use(config => {
const token = store.state.token;
token && (config.headers.Authorization = token);
loadingInstance = Loading.service({
lock: true,
text: 'loading...'
})
return config;
}, err => {
return Promise.error(err);
})
// 响应拦截器
axios.interceptors.response.use(
response => {
loadingInstance.close();
return Promise.resolve(response);
},
error => {
if (error.response.status) {
let msg = error.Message !== undefined ? error.Message : '';
Message({
message: "网络错误" + msg,
type: 'error',
duration: 3 * 1000
})
loadingInstance.close();
return Promise.reject(error.response);
}
}
);
export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
})
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data);
})
});
};
export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, qs.stringify(params))
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data);
})
})
}
vue 中封装axios
最新推荐文章于 2024-07-03 08:00:00 发布