axios全局路由拦截的设置方法

本文介绍了如何在项目中使用axios的全局路由拦截功能,以便在请求出错时立即捕获并处理,提高效率。详细步骤包括创建axios实例并配置interceptors.response.use方法的两个回调函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个项目中如果http请求发生了错误/异常,比如返回码4xx(表示没有授权,登录过期等),我们希望能够在axios在第一时间就能拦截获取到,然后直接提示报错的错误信息,而不是在发起请求的地方,单独去做判断,这样效率太低。

所以这个时候,axios全局路由拦截就登场了:

axios全局路由代码通常是在构建axios实例注入的,下面就是代码模板:

const instance = axios.create({}) 

instance.interceptors.response.use(

// 回调函数1: 入参是请求成功时的返回结果:response

  (response) => {    

     // 请求正常时的代码块

    return response

  },

// 回调函数2: 入参是请求失败时的返回错误: error

  (error ) => {

      // 请求发生错误时的代码块。

  }

);

下面是一个应用实例中的代码:

import axios  from "axios";

import { message } from "antd"

import { useNavigate } from "react-router-dom";

const baseURL = "xxxxx"

// 创建axios实例

const instance = axios.create({

  baseURL,

  headers: {

    "Authorization": "xxxxxxxxx",   

  },

});

const navigate = useNavigate();

// 设置axios全局路由拦截

instance.interceptors.response.use(

  (response) => {    

    return response;

  },

  (error ) => {

    if (!error.response) {

      message.error("网络异常", 3);

    } else if ( error.response.status != 200) {

      console.log(error.response);

      error.response.data.err? message.error(error.response.data.err,3): null;   

      navigate("/signin");

       }

   

     }

  }

);

 总结:axios全局路由拦截的设置方法分为两步:

1.  通过 axios.create方法创建axios实例

2.  通过axios实例的interceptors.response.use方法创建拦截规则,这个方面里面有两个回调函数

      a. 回调函数1: 入参是请求成功时的返回结果:response

      b. 回调函数2: 入参是请求失败时的返回错误: error

在Vue中使用axios实现全局拦截方法如下: 首先,我们需要创建一个axios实例,可以在主文件中或者单独的一个文件中创建。根据引用中的代码,我们可以创建一个名为`service`的axios实例,设置基础URL、是否带cookie以及请求超时时间等参数。 接下来,我们可以使用`service.interceptors.request.use`来添加请求拦截器。在拦截器中,我们可以对请求做一些共同的处理,比如在请求头中添加token、loading效果等。在请求拦截器中,我们可以通过`config`参数来获取请求的相关信息,如请求的URL、请求方法等。 然后,我们可以使用`service.interceptors.response.use`来添加响应拦截器。在拦截器中,我们可以对响应做一些共同的处理,比如根据响应状态码进行错误处理、根据响应结果进行统一的提示等。在响应拦截器中,我们可以通过`response`参数来获取响应的相关信息,如响应的数据、响应的状态码等。 需要注意的是,拦截器是一个异步操作,所以在拦截器中如果需要使用异步操作,可以返回一个Promise对象或者使用async/await来处理。 总结一下,axios全局拦截可以通过创建axios实例,并使用`interceptors`属性来添加请求拦截器和响应拦截器来实现。这样可以对请求和响应进行统一的处理,提高代码的复用性和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue axios全局拦截 get请求、post请求、配置请求的实例代码](https://download.csdn.net/download/weixin_38734200/12949432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [axios全局拦截+请求响应处理+路由拦截](https://blog.csdn.net/weixin_42484657/article/details/122365109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值