import axios from 'axios'; import store from '../states/store'; import { API_BASE_URL } from './config'; import { SystemMode } from '../states/systemModeSlice'; import emitter from '../utils/eventEmitter'; const axiosInstance = axios.create({ baseURL: API_BASE_URL, }); axiosInstance.interceptors.request.use( (config) => { const state = store.getState(); console.log(`当前系统模式:${state.systemMode.mode}`); const token = state.systemMode.mode === SystemMode.Emergency ? state.product.guest : state.userInfo.token; const { productName, language, source } = state.product; config.headers.Authorization = `Bearer ${token}`; config.headers.Language = language; config.headers.Product = productName; config.headers.Source = source; return config; }, (error) => { return Promise.reject(error); } ); // 请求拦截器 axiosInstance.interceptors.request.use( (config) => { console.log('【网络】🚀 请求:', { url: config.url, method: config.method, headers: config.headers, data: config.data, params: config.params, }); return config; }, (error) => { console.error('【网络】❌ 请求错误:', error); return Promise.reject(error); } ); // 响应拦截器 axiosInstance.interceptors.response.use( (response) => { if (response.data.code !== '0x000000') { console.error('【网络】❌ 响应错误,非"0x000000":', { url: response.config.url, status: response.status, data: response.data, }); } else { console.log('【网络】✅ 响应:', { url: response.config.url, status: response.status, data: response.data, }); } return response; }, (error) => { console.error('【网络】❌ 响应错误:', { url: error.config?.url, status: error.response?.status, message: error.message, data: error.response?.data, }); return Promise.reject(error); } ); axiosInstance.interceptors.response.use( (response) => { return response; }, (error) => { if (error.response && error.response.data.code === 0x000101) { emitter.emit('tokenExpired'); // eslint-disable-next-line return new Promise(() => {}); // Suspend the current execution } return Promise.reject(error); } ); export default axiosInstance;