npm install axios //安装axios
新建一个https.js文件
import axios from "axios";
import { Message, Loading } from "element-ui";
import { BASE_URL } from "./index";
const http = axios.create({
baseURL: BASE_URL,
timeout: 1200000, // 超时
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
});
const get = http.get;
http.get = (url, params) => {
return get(url, { params }).then((data = {}) => {
return Promise.resolve(data.data ? data.data.data : false);
});
};
const post = http.post;
http.post = (url, params, config) => {
return post(url, params, config).then((data = {}) => {
return Promise.resolve(data.data ? data.data : false);
});
};
let loading;
// 请求拦截器
http.interceptors.request.use(
config => {
if (config.url !== "/auth/login" && !config.isExcel) {
// 当没有参数 防止接口报错 随便定义的参数
const arr = config.data ? Object.keys(config.data) : [];
if (arr.length == 0) {
config.data = { "1": 1 };
}
config.data = qs.stringify({
requestData: JSON.stringify(config.data),
token: localStorage.getItem("token")
});
}
// 加载提示
loading = Loading.service({
lock: true,
text: "数据加载中",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.2)"
});
return config;
},
error => {
return Promise.reject(error);
}
);
// 响应拦截器
http.interceptors.response.use(
response => {
if (response.data.code == "0000") {
// 成功
loading.close();
return response;
} else if (response.data.code == "9997") {
loading.close();
window.localStorage.clear();
Message.error("登录过期,请重新登录");
// location.href = "/login";
} else {
loading.close();
Message.error(
response.data.msg ||
response.data.message ||
"数据加载失败,请刷新页面重试!"
);
}
},
error => {
loading.close();
Message.error("网络异常,请刷新页面重试!");
return Promise.reject(error);
}
);
export default http;