关键词:
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,
});
}