import { getToken } from '@/utils' import { isMobile } from '@genting/hooks' import { notification, Space } from 'antd' import type { RequestConfig } from 'umi' import VConsole from 'vconsole' import { API_HOST, isDev } from './constants' if (isDev && isMobile()) { new VConsole() } export const qiankun = { // 应用加载之前 async bootstrap(props?: Record) { console.log('app1 bootstrap', props) }, // 应用 render 之前触发 async mount(props: Record) { console.log('app1 mount') }, // 应用卸载之后触发 async unmount(props: Record) { console.log('app1 unmount', props) }, } const codeMessage: Record = { 200: '服务器成功返回请求的数据', 201: '新建或修改数据成功', 202: '一个请求已经进入后台排队(异步任务)', 204: '删除数据成功', 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作', 401: '用户没有权限(令牌、用户名、密码错误)', 403: '用户得到授权,但是访问是被禁止的', 404: '发出的请求针对的是不存在的记录,服务器没有进行操作', 405: '请求方法不被允许', 406: '请求的格式不可得', 410: '请求的资源被永久删除,且不会再得到的', 422: '当创建一个对象时,发生一个验证错误', 500: '服务器发生错误,请检查服务器', 502: '网关错误', 503: '服务不可用,服务器暂时过载或维护', 504: '网关超时', } export const request: RequestConfig = { timeout: 5 * 60 * 1000, prefix: API_HOST, errorHandler: async (error) => { let { response, request } = error, message = codeMessage[response?.status] || '未知错误' if (response && response.status) { const contentType = response?.headers.get('Content-Type'), isJson = contentType?.includes('json') const data = await response[ isJson ? 'json' : request.options.responseType || 'text' ]() message = data.message || message notification.error({ message: `请求错误 ${response.status}`, description: (
{message}
地址:{request.url}
), }) } else { notification.error({ message: '网络异常', description: (
您的网络发生异常,无法连接服务器
地址:{request.url}
), }) } throw new Error(message) }, middlewares: [ (ctx: any, next: any) => { const token = getToken() if (token) { ctx.req.options.headers = ctx.req.options.headers || {} ctx.req.options.headers.token = token } return next() }, ], }