/* * @Author: 赵伟 * @Date: 2024-03-25 13:52:54 * @Description: */ import type { RequestConfig } from '@umijs/max'; import { message } from 'antd'; import { clearSessionToken, getAccessToken, getRefreshToken, getTokenExpireTime } from './access'; const checkRegion = 5 * 60 * 1000; /** * Umi Max 网络请求配置 * @doc https://umijs.org/docs/max/request#配置 */ export const requestConfig: RequestConfig = { errorConfig: {}, requestInterceptors: [ (url: any, options: { headers: any }) => { const headers = options.headers ? options.headers : []; const authHeader = headers['Authorization']; const isToken = headers['isToken']; if (!authHeader && isToken !== false) { const expireTime = getTokenExpireTime(); if (expireTime) { const left = Number(expireTime) - new Date().getTime(); const refreshToken = getRefreshToken(); if (left < checkRegion && refreshToken) { if (left < 0) { clearSessionToken(); } } else { const accessToken = getAccessToken(); if (accessToken) { headers['Authorization'] = `Bearer ${accessToken}`; } } } else { clearSessionToken(); } } return { url, options }; }, ], responseInterceptors: [ (response: any) => { const { status, data } = response; // console.log('response', response); if (status >= 200 && status < 300 && data && (data instanceof Blob || data.code === 200)) { return response; } else { if (data && data.msg) { message.error(data.msg); } else { message.error('请求失败'); } return Promise.reject(response); } }, ], };