// API配置 export const apiConfig = { baseURL: '', timeout: 30000, retryCount: 3, retryDelay: 1000 } // 请求拦截器函数 const requestInterceptor = (config: RequestInit & { url: string }) => { // 可以在这里添加认证token等 return config } // 响应拦截器函数 const responseInterceptor = async (response: Response) => { if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`) } return response.json() } // 创建fetch请求的通用函数 export const httpRequest = async (url: string, options: RequestInit = {}) => { const config = requestInterceptor({ url: url, ...options, headers: { 'Content-Type': 'application/json', ...options.headers, } }) const controller = new AbortController() const timeoutId = window.setTimeout(() => controller.abort(), apiConfig.timeout) try { const response = await fetch(url, { ...config, signal: controller.signal }) window.clearTimeout(timeoutId) return await responseInterceptor(response) } catch (error) { window.clearTimeout(timeoutId) console.error('API请求错误:', error) throw error } } // 设置baseURL的函数 export const setBaseURL = (url: string) => { apiConfig.baseURL = url } // 设置超时时间的函数 export const setTimeout = (timeout: number) => { apiConfig.timeout = timeout }