当前位置: 首页 > news >正文

axios响应发生错误时的情况列表

import axios from 'axios';
import toast from 'react-hot-toast';
import { getNavigate } from './navigateHelper'; // 如果有全局 navigate 管理(可选)const instance = axios.create({baseURL: '/api',timeout: 10000, // 10 秒超时
});instance.interceptors.response.use((response) => response,(err) => {// === 网络层错误(没有收到任何响应) ===if (!err.response) {if (axios.isCancel(err)) {console.warn('请求被取消:', err.message);} else if (err.code === 'ECONNABORTED') {toast.error('请求超时,请稍后重试');} else if (err.message === 'Network Error') {toast.error('网络错误,请检查网络或服务器连接');} else {toast.error(`未知网络错误: ${err.message}`);}return Promise.reject(err);}// === 服务器有返回,但状态码是错误的 ===const status = err.response.status;const message =err.response.data?.message ||err.response.statusText ||'请求失败,请稍后重试';switch (status) {case 400:toast.error(`请求参数错误: ${message}`);break;case 401:toast.error('登录已过期,请重新登录');const navigate = getNavigate?.();if (navigate) {navigate('/login');} else {window.location.href = '/login';}break;case 403:toast.error('没有权限访问该资源');break;case 404:toast.error('请求的资源不存在');break;case 408:toast.error('请求超时,请稍后重试');break;case 500:toast.error('服务器内部错误,请稍后再试');break;case 502:case 503:case 504:toast.error('服务器暂时不可用,请稍后重试');break;default:toast.error(`请求错误 (${status}): ${message}`);}return Promise.reject(err);}
);export default instance;

说明:

  • !err.response → 请求没有得到响应(网络、CORS、超时等)

  • axios.isCancel(err) → 判断是否主动取消请求

  • err.code === 'ECONNABORTED' → 请求超时

  • err.response.status → HTTP 状态码(如 404、500)

可选优化建议:

  1. 添加全局错误上报(例如发送到 Sentry):

  2. import * as Sentry from '@sentry/react';
    Sentry.captureException(err);
    

    根据环境动态关闭 toast

  3. if (process.env.NODE_ENV === 'development') {console.error('Axios Error:', err);
    }
    

    统一返回格式
    可以让所有接口都返回 { success, data, message },在 response 拦截器中统一判断。

http://www.dtcms.com/a/525718.html

相关文章:

  • 网站备案 接口360网页游戏大厅官网
  • vue导出数据到excel
  • 网站续费一年多少钱西安旅游网站建设
  • 探码科技再获“专精特新”认定:Baklib引领AI内容管理新方向
  • 郑州大型网站建设价格百度广告联盟app
  • 简述网站开发具体流程巫山集团网站建设
  • 【Diffusion Model】发展历程
  • 作用域 变量提升(Hoisting)的代码输出题
  • 商城网站建设最好的公司免费网站打包app
  • 网站没有关键词自己做的网站如何上首页
  • 【Matlab】异常处理:MException
  • 郑州友网站建设四川省建设监理协会网站
  • 本地部署Docsify生成文档网站并实现公网环境远程访问
  • 有做a50期货的网站服务周到的微网站建设
  • Linux:开源时代的隐形基石
  • 毕业设计做企业门户网站搭建网页的基础语言
  • 破解本地生活 “到店-复购“ 断层!我店+微团双模式,核销率提升90%
  • 仿qq商城版淘宝客网站源码模板+带程序后台文章dede织梦企业程序网站做担保交易平台
  • Rust中的智能指针
  • 网站建设论文提纲论坛门户网站开发
  • 有哪些单页网站网站建设代码走查
  • 四线城市做网站建设怎么样网页设计与制作全过程
  • Telegram tdlib客户端Java本地编译打包
  • 上海做网站的公司是什么桂林象鼻山景区介绍
  • 阿里云渠道商:OSS与传统存储系统的差异在哪里?
  • Redis事务和Lua脚本对比
  • 广州微信网站建设报价表宝塔建站系统
  • Git 日常
  • 2. C语言 多级指针
  • 素材下载网站模板深圳企业网络推广运营技巧