import axios from "axios";
import Vue from "vue";
import { message } from "ant-design-vue";
const url= ***;
const token='123456'
const $http = axios.create({
baseURL: `${url}/api`,
timeout: 60000,
});
Vue.prototype.$http = $http;
// 拦截处理器
const errorHandler = (error) => {
if (error.toString().includes("timeout")) {
message.error("请求超时");
return Promise.reject(error);
} else {
if (error.response) {
const data = error.response.data;
if (error.response.status === 403) {
message.error(data.message);
logout();
}
if (error.response.status === 401) {
message.destroy();
message.error("登录过期,请重新登录!");
accessToken.remove();
logout();
}
}
return Promise.reject(error);
}
};
[$http].forEach((item) => {
// 添加请求拦截器
item.interceptors.request.use((config) => {
if (/get/i.test(config.method)) {
// 判断get请求
config.params = config.params || {};
config.params._t = Date.parse(new Date()) / 1000; // 添加时间戳
}
config.headers["Authorization"] = `Bearer ${token}`;
return config;
}, errorHandler);
//添加响应拦截器
item.interceptors.response.use((response) => {
if (response.status === 401) {
logout();
}
let dataAxios = response.data;
const { status } = dataAxios;
if (status !== "complete") {
message.error(dataAxios.errorMessage || "请求错误!");
return Promise.reject(dataAxios);
}
return dataAxios;
}, errorHandler);
});
// export { $httpyx };
vue 封装一个http.js
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...