import axios from "axios"; import router from "@/router/index.js"; import { ElMessage } from 'element-plus'; // 错误处理函数 const handleResponseError = (result) => { if (result.status !== 200) { router.push("/login"); } if (result.data.message === "NOT_LOGIN" || [2, 3, 4].includes(result.data.code)) { ElMessage.error('登录失效,请重新登录!'); localStorage.removeItem("token"); router.push("/login"); return null; } if (result.data.code === 7) { ElMessage.error('该用户已存在,请重新输入!'); return null; } if (result.data.code === 1) { ElMessage.error('请求失败,请稍后重试!'); } return result.data; }; // 请求实例缓存 const instances = new Map(); // 请求工厂函数(单例模式) export const createRequestInstance = (baseURL, config = {}) => { // 检查是否已存在该域名的实例 if (instances.has(baseURL)) { return instances.get(baseURL); } // 创建新实例 const instance = axios.create({ baseURL, timeout: 10000, // 默认超时时间 headers: { 'Content-Type': 'application/json' }, ...config }); // 添加响应拦截器 instance.interceptors.response.use( result => handleResponseError(result), error => { ElMessage.error('请求失败,请稍后重试!'); return Promise.reject(error); } ); // 缓存实例 instances.set(baseURL, instance); return instance; }; // 默认导出原有的阿里云请求实例 export default createRequestInstance("https://tx.ljsea.top/");