123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import '@unocss/reset/sanitize/sanitize.css';
- import { message, notification } from 'antd';
- import type { RequestConfig } from 'umi';
- // 与后端约定的响应数据格式
- interface ResponseStructure {
- code: number;
- isSuccess: boolean;
- isAuthorized: boolean;
- result: any;
- message: string;
- error: string;
- errorCode: string;
- }
- export const request: RequestConfig = {
- timeout: 10000,
- // other axios options you want
- errorConfig: {
- errorThrower(res){
- const { code, error: errorMsg, errorCode, isSuccess } = res;
- if (!isSuccess) {
- const error: any = new Error(errorMsg);
- error.name = 'BizError';
- error.info = { errorCode, errorMessage: errorMsg };
- throw error; // 抛出自制的错误
- }
- },
- errorHandler(error: any, opts: any){
- if (opts?.skipErrorHandler) throw error;
- // 我们的 errorThrower 抛出的错误。
- if (error.name === 'BizError') {
- const errorInfo: ResponseStructure | undefined = error.info;
- if (errorInfo) {
- const { error: errorMessage } = errorInfo;
- message.error(errorMessage);
- }
- } else if (error.response) {
- // Axios 的错误
- // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
- message.error(`Response status:${error.response.status}`);
- } else if (error.request) {
- // 请求已经成功发起,但没有收到响应
- // \`error.request\` 在浏览器中是 XMLHttpRequest 的实例,
- // 而在node.js中是 http.ClientRequest 的实例
- message.error('请求无响应,请稍后再试!');
- } else {
- // 发送请求时出了点问题
- message.error('请求错误,请稍后再试!');
- }
- },
- },
- requestInterceptors: [
- (url, options) => {
- const baseUrl = process.env.NODE_ENV === 'production' ? '' : '/api'//'http://ab.dev.jbpm.shalu.com' // https://edesign.shalu.com'
- // const enterpriseCode = sessionStorage.getItem('enterpriseCode');
- const enterpriseCode = 'a';
- const token = localStorage.getItem('token_' + enterpriseCode);
-
- if(token) {
- if(!options.headers) {
- options.headers = {}
- }
- options.headers.Authorization = token
- }
- return {
- url: baseUrl + url,
- options
- }
- }
- ],
- responseInterceptors: [
- (response) => {
- const {data = {} as any, config} = response;
- if(data?.error) {
- // message.error(data.error);
- return Promise.reject(data.error);
- }
-
- return response;
- }
- ]
- };
|