/** * API 服务类 * 提供按需引入的方式使用 API */ import * as userApi from '../api/user.js'; // 导入其他 API 模块 // import * as orderApi from '../api/order.js'; // import * as productApi from '../api/product.js'; import errorHandler from '../utils/errorHandler.js'; class ApiService { constructor() { this.apis = { user: userApi, // order: orderApi, // product: productApi }; // 为每个API方法添加错误处理包装 this._wrapApiWithErrorHandling(); } /** * 为所有API方法添加统一的错误处理 * @private */ _wrapApiWithErrorHandling() { // 遍历所有API模块 Object.keys(this.apis).forEach(moduleName => { const moduleApi = this.apis[moduleName]; // 遍历模块中的所有方法 Object.keys(moduleApi).forEach(methodName => { const originalMethod = moduleApi[methodName]; // 如果是函数,则包装它 if (typeof originalMethod === 'function') { moduleApi[methodName] = async (...args) => { try { return await originalMethod(...args); } catch (error) { // 统一处理错误 this._handleApiError(error, `${moduleName}.${methodName}`); // 继续抛出错误,让调用者可以进行自定义处理 throw error; } }; } }); }); } /** * 统一处理API错误 * @param {Error} error - 错误对象 * @param {string} apiName - API名称 * @private */ _handleApiError(error, apiName) { errorHandler.logError(error, apiName); // 错误已经在 request.js 中处理过提示,这里不需要重复提示 } /** * 获取指定模块的 API * @param {string} module - API 模块名称 * @returns {Object} - 对应模块的 API 对象 */ get(module) { if (!this.apis[module]) { console.error(`API 模块 "${module}" 不存在`); return {}; } return this.apis[module]; } /** * 获取用户相关 API * @returns {Object} - 用户相关 API 对象 */ get user() { return this.apis.user; } // 可以添加其他模块的 getter // get order() { // return this.apis.order; // } // get product() { // return this.apis.product; // } } // 创建单例 const apiService = new ApiService(); export default apiService;