import { message } from 'ant-design-vue'; import axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios'; // 创建HTTP实例 const http: HttpInstance = axios.create({ baseURL: import.meta.env.ENV_HTTP_BASE, adapter: 'fetch', timeout: 30_000, }); export default http; // 添加请求拦截器 http.interceptors.request.use( (config) => config, (error) => Promise.reject(error.message), ); // 添加响应拦截器 http.interceptors.response.use( (response) => { const res = response.data; if (res?.success) return res.result; const hint = res?.message ?? '未知异常'; message.error(hint); return Promise.reject(hint); }, (error) => { const hint = error.response.data?.message || error.message; message.error(hint ?? '未知异常'); return Promise.reject(hint); }, ); type HttpInstance = Omit & { get: (url: string, config?: AxiosRequestConfig) => Promise; post: (url: string, body?: B, config?: AxiosRequestConfig) => Promise; }; type CommonRes = { code: number; success: boolean; result: T | undefined; message: string; };