Files
common4web/src/utils/Network.ts
2025-11-08 09:57:20 +08:00

50 lines
1.1 KiB
TypeScript

import axios from "axios";
import { Response } from "~/types/Model";
export type ErrorCallback = (response: Response) => void;
let globalErrorCallback: ErrorCallback | null = null;
export const setGlobalErrorCallback = (callback: ErrorCallback) => {
globalErrorCallback = callback;
};
axios.defaults.withCredentials = true;
axios.interceptors.response.use((axiosResp: any) => {
if (!axiosResp.config.responseType) {
// 服务端返回
const serverResp = axiosResp.data as Response;
if (serverResp.code < 40000) {
// 200 或 300 HTTP 状态段视为成功
return serverResp.data;
} else {
if (globalErrorCallback) {
globalErrorCallback(serverResp);
}
// 由调用方处理
return Promise.reject(serverResp.msg);
}
}
return axiosResp.data;
}, (error: any) => {
// 请求错误
if (error) {
if (error.response && error.response.status) {
throw error;
}
if (error.request) {
if (error.message.startsWith("timeout")) {
throw new Error("time out");
} else {
throw new Error(error.message);
}
}
}
throw error;
});
export default {
axios,
setGlobalErrorCallback
};