12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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;
|