【AntDesign】封装全局异常处理-全局拦截器
2023/9/30 23:08:50
本文主要是介绍【AntDesign】封装全局异常处理-全局拦截器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
[toc]
场景
本文前端用的是阿里的Ant-Design框架,其他框架也有全局拦截器,思路是相同,具体实现自行百度下吧
因为每次都需要调接口,都需要单独处理异常情况(code !=0),因此前端需要对后端返回的通用响应进行统一处理,比如
-
业务异常提示
从 response取出code,根据code中集中处理错误,比如提示用户未登录、参数为空等
-
直接返回业务内容
从 response取出data,进行返回,而不是每次返回全部json内容
1 定义全部异常处理类
新建新的ts类,比如globalRequest.ts
该类处理两个情况
-
所有请求拦截器(
request.interceptors.request
)在请求后端API前,统一做处理,比如 改变url参数,附带统一参数等
-
所有响应拦截器(
request.interceptors.response
)接收来自后端返回结果后,统一处理地方,比如异常处理提示
更详细的 api 文档: https://github.com/umijs/umi-request
/** * request 网络请求工具 * 更详细的 api 文档: https://github.com/umijs/umi-request */ import {extend} from 'umi-request'; // 需集成类 import {message} from "antd"; // 提示框 import {history} from "@@/core/history"; import {stringify} from "querystring"; /** * 配置request请求时的默认参数 */ const request = extend({ credentials: 'include', // 默认请求是否带上cookie // requestType: 'form', }); /** * 所有请求拦截器 * 1. 在请求后端API前,统一做处理,比如 改变url参数,附带统一参数等 */ request.interceptors.request.use((url, options) => { // 打印每次请求的API console.log(`do request url = ${url}`); return { url, options: { ...options, // headers: {}, }, }; }); /** * 所有响应拦截器 * 1. 接收来自后端返回结果后,统一处理地方,比如异常处理提示 */ request.interceptors.response.use(async response => { const res = await response.clone().json(); if (res.code === 0) { // 成功,则取出 data内容 直接返回 return res.data; } if (res.code === 40100) { // 未登录错误码 message.error('请先登录'); // 跳转登录地址 history.replace({ pathname: '/user/login', search: stringify({ redirect: location.pathname, }), }); } else { message.error(res.description) } return res.data; } ); export default request;
2 替换request引用
将原来的request
引用,替换成自己的request
,在api.ts
类中修改
原来
import {request} from 'umi';
替换成
import request from '@/plugins/globalRequest';
3 代码优化
优点:
- 省去每个业务异常处理
- 直接返回 data 内容
总结
加了全局异常处理类后,实际上是通过request
和response
拦截器实现的,少处理很多冗余代码,代码更加简洁和优雅了!!!
这篇关于【AntDesign】封装全局异常处理-全局拦截器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2023-12-08IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!
- 2023-12-07想在同一张图片上添加不同的文字,也就是一张图片上出现一个词
- 2023-12-07SQL 数据库语句- 创建和管理数据库
- 2023-12-07Java 运算符简介
- 2023-12-07优化 uniapp 发行操作:一键打包、混淆代码
- 2023-12-07不敢想象考研和考公同时上岸,大家该有多活泼开朗!
- 2023-12-07SQL ALTER TABLE 语句- 灵活修改表结构和数据类型
- 2023-12-07轻松掌握ArkTS!鸿蒙新作《鸿蒙HarmonyOS应用开发入门》简介
- 2023-12-06鸿蒙原生应用再添新丁!麦当劳中国入局鸿蒙
- 2023-12-06XA分布式事务方案的实现原理和核心机制,以及使用ShardingSphere的技术细节和注意事项