news 2026/4/17 19:29:08

Vue——Vue3 响应拦截与错误处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue——Vue3 响应拦截与错误处理

背景问题:
需要统一处理响应和错误。

方案思考:
使用响应拦截器处理错误。

具体实现:
增强的错误处理机制:

// utils/error-handler.jsimport{ElMessage,ElNotification}from'element-plus'// 错误类型映射consterrorMessages={400:'请求参数错误',401:'未授权,请重新登录',403:'拒绝访问',404:'请求资源不存在',500:'服务器内部错误',502:'网关错误',503:'服务不可用',504:'网关超时'}// 网络错误映射constnetworkErrors={'Network Error':'网络连接异常','timeout':'请求超时','Request failed with status code':'服务器响应异常'}// 错误处理类exportclassErrorHandler{// 处理 HTTP 状态码错误statichandleHttpError(status,message){consterrorMsg=errorMessages[status]||`请求错误${status}`ElMessage.error(errorMsg)// 特殊状态码处理if(status===401){// 清除用户信息,跳转登录页this.handleUnauthorized()}returnerrorMsg}// 处理网络错误statichandleNetworkError(error){letmessage='网络连接异常'if(error.message){for(const[key,value]ofObject.entries(networkErrors)){if(error.message.includes(key)){message=valuebreak}}}ElMessage.error(message)returnmessage}// 处理业务错误statichandleBusinessError(code,message){// 根据业务错误码处理switch(code){case10001:message='登录已过期,请重新登录'this.handleUnauthorized()breakcase10002:message='权限不足'breakdefault:message=message||'业务处理失败'}ElMessage.error(message)returnmessage}// 处理未授权statichandleUnauthorized(){// 清除本地存储的用户信息localStorage.removeItem('token')localStorage.removeItem('user_info')// 跳转到登录页setTimeout(()=>{window.location.href='/login'},1000)}// 显示通知staticshowNotification(title,message,type='error'){ElNotification({title,message,type,duration:3000})}}exportdefaultErrorHandler

更新请求工具以集成错误处理:

// utils/request.js (错误处理增强版)importaxiosfrom'axios'import{useUserStore}from'@/stores/modules/user'import{requestGuard}from'./request-guard'importErrorHandlerfrom'./error-handler'// 创建 axios 实例constservice=axios.create({baseURL:import.meta.env.VITE_APP_BASE_API||'/api',timeout:15000,headers:{'Content-Type':'application/json;charset=UTF-8'}})// 请求拦截器service.interceptors.request.use(config=>{// 防止重复请求if(requestGuard.hasPendingRequest(config)){constsource=axios.CancelToken.source()config.cancelToken=source.token source.cancel('重复请求')returnPromise.reject(newaxios.Cancel('重复请求'))}requestGuard.addPendingRequest(config)// 添加认证 tokenconsttoken=localStorage.getItem('access_token')if(token){config.headers['Authorization']=`Bearer${token}`}// 添加请求时间戳if(config.method==='get'){config.params={...config.params,_t:Date.now()}}returnconfig},error=>{returnPromise.reject(error)})// 响应拦截器service.interceptors.response.use(response=>{requestGuard.removePendingRequest(response.config)constres=response.dataif(res.code&&res.code!==200){ErrorHandler.handleBusinessError(res.code,res.message)returnPromise.reject(newError(res.message||'Error'))}else{returnres}},error=>{requestGuard.removePendingRequest(error.config)if(axios.isCancel(error)){console.log('请求被取消:',error.message)returnPromise.reject(error)}if(error.response){// HTTP 状态码错误ErrorHandler.handleHttpError(error.response.status,error.response.statusText)}else{// 网络错误ErrorHandler.handleNetworkError(error)}returnPromise.reject(error)})exportdefaultservice
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:44:57

【计算机毕业设计案例】基于python卷神经网络的纸箱是否有破损识别基于python深度学习的纸箱是否有破损识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/17 14:22:34

急刹事件作为道路风险评估新指标研究

我们通过分析Android Auto收集的急刹事件(HBEs)与实际道路事故率之间的关系,确立了两者之间的正相关性。研究证实,急刹事件频率较高的道路段确实具有显著更高的事故风险,这表明此类事件可以作为道路安全评估的前瞻性指…

作者头像 李华
网站建设 2026/4/17 13:35:26

部署AI智能体的七个实战经验教训

部署AI智能体并非传统的软件发布,需要在实际操作中投入大量工作和规划才能让这些工具发挥生产力。顶层策略包括给予智能体一定的自由度,但不能过度放任,同时还需要重新思考传统的投资回报率衡量标准。有效的AI开发和管理需要在控制、投资、治…

作者头像 李华
网站建设 2026/4/17 18:47:01

压测 把自己 压进去了

凌晨一点,城中村的出租屋里,只有电脑屏幕的蓝光映着小李的脸。作为一名自由后端开发者,他不用受公司制度约束,日常接些接口开发、bug修复的散活,大把空闲时间都耗在了钻研技术上——而压测各类接口,成了他藏…

作者头像 李华
网站建设 2026/4/17 0:38:55

项目的逻辑和流程

项目的逻辑和流程 在互联网项目的推进过程中,清晰的逻辑框架和规范的执行流程是保障项目稳定落地的核心。无论是小型工具开发还是大型系统搭建,都离不开“从无到有、从测试到上线”的全流程管控。 一、项目核心逻辑阶段核心目标关键动作参与角色交付成果…

作者头像 李华
网站建设 2026/4/17 14:47:19

招聘外包口碑品牌榜前10名测评+选型全套指南!

“旺季急招50人,外包承诺3天到岗,结果一周才凑20人,一半还不会用系统”“花大价钱找外包,招来的人连基础操作都不会,直接亏了几十万”……做HR的谁没在招聘外包上踩过坑?现在招聘外包市场规模超3000亿&…

作者头像 李华