umi3项目的接口请求封装以及异常处理

关键词: 

errorHandler interceptors

1、interceptors 和 errorHandle区别

   处理的情况:  拦截器可以对请求的request和response分别进行拦截处理

errorHandle只有发生状态码  !== 200 || 拦截器感受到异常抛出的问题

    处理时机: 先 拦截器处理 后 errorhandle处理

2、使用情况

    业务情况下 会有接口通(status === 200 )但 业务返回code码异常的情况

    这种情况需要在拦截器的时候将该情况统一处理(报错框 or message提示)


例子: 

const errorHandler = err => {

  // http status !== 200时都会进入该异常处理

  const { response, request } = err || {};

  console.log(response, 'errorHandler', request);

  const { status, statusText } = response;

  if (status > 300 || status < 200) {

    printErrorInfo({ response, request });

    Modal.error({

      title: `Error Status: ${status}`,

      content: `${statusText || 系统错误}`,

    });

    throw err;

  }

};

const requestConfig = extend({

  timeout: 6000,

  credentials: 'include',

  requestType: 'form',

  errorHandler,

});

requestConfig.interceptors.response.use(async response => {

  const { status } = response;

  const data = await response.clone().json();

  const { code, msg } = data;

  if (status === 200) {

    // 接口通过但需要处理约定好的其他信息 code!=0

    console.log(' 进入200但rd返回需要特别提示信息拦截器处理');

    notification.info({

      message: msg,

      code: code,

    });

  }

你可能感兴趣的:(umi3项目的接口请求封装以及异常处理)