umi-request 的 errorHandler的错误处理是在接口请求的status!=200时的错误处理
(所有的接口的status都是200,判断错误时自定义错误);自定义的错误信息
const defaultOption = {
prefix: baseUrl,
// 接口超时时间
timeout: 45000,
// 请求方法
method: "POST"
}
const codeMessage = {
200: '服务器成功返回请求的数据。',
201: '新建或修改数据成功。',
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
405: '请求方法不被允许。',
406: '请求的格式不可得。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。',
};
/**
* 请求拦截器
* @param url 请求参数
* @param options 请求配置
*/
// 相应拦截器
const responseInterceptor = async (response: any) => {
if (response.status !== 200) {
const err = new Error('服务器异常');
throw err;
} else {
let result = await response.clone().json();
console.log(result)
return result
}
}
/** * 异常处理程序 */ const errorHandler = (error: any) => { const { response, data } = error; console.log(response,data ) if (response && response.status) { const errorText = codeMessage[response.status] || response.statusText; message.error(errorText); } if (!response&&!data) { message.error('哇哦,服务器出错啦,请稍候再试~'); } else if (data) { message.error(data.ret.msg); } }; 需要把data也带进去,去处理自定义错误信息
export const request: RequestConfig = {
...defaultOption,
errorHandler,
// requestInterceptors: [requestInterceptor],
responseInterceptors: [responseInterceptor]
};