当前位置:首页 > VUE

vue axios 如何实现拦截

2026-01-21 06:19:16VUE

请求拦截与响应拦截的实现

在Vue项目中,使用Axios拦截器可以全局处理请求和响应,例如添加认证头、统一错误处理等。以下是具体实现方法:

请求拦截器

请求拦截器用于在发送请求前统一处理配置,例如添加Token或修改参数:

import axios from 'axios';

// 创建实例(可选)
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// 添加请求拦截器
instance.interceptors.request.use(
  config => {
    // 在发送请求前修改配置
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    // 请求错误处理
    return Promise.reject(error);
  }
);

响应拦截器

响应拦截器用于处理返回数据或统一错误码:

instance.interceptors.response.use(
  response => {
    // 对响应数据做处理(例如提取data字段)
    return response.data;
  },
  error => {
    // 统一错误处理(例如401跳转登录)
    if (error.response.status === 401) {
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

拦截器移除

如需移除拦截器,保存拦截器ID后调用eject

const reqInterceptor = axios.interceptors.request.use(...);
axios.interceptors.request.eject(reqInterceptor);

实际应用示例

结合Vue的全局配置:

// main.js
axios.interceptors.request.use(...);
axios.interceptors.response.use(...);
Vue.prototype.$http = axios;

在组件中直接使用:

this.$http.get('/user').then(...)

通过拦截器可以实现日志记录、Loading状态管理、请求重试等高级功能,注意避免在拦截器中执行耗时操作以免阻塞请求流程。

vue axios 如何实现拦截

标签: 如何实现vue
分享给朋友:

相关文章

vue项目实现

vue项目实现

Vue 项目实现指南 环境准备 确保已安装 Node.js(建议版本 14+)和 npm/yarn。通过以下命令检查版本: node -v npm -v 安装 Vue CLI(脚手架工具):…

vue实现分支

vue实现分支

Vue 实现分支的方法 在 Vue 项目中实现分支功能通常涉及条件渲染、动态组件或路由控制。以下是几种常见的实现方式: 条件渲染(v-if/v-show) 使用 Vue 的指令根据条件显示不同内容:…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm insta…

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天…

vue实现点击旋转轮盘

vue实现点击旋转轮盘

实现点击旋转轮盘效果 在Vue中实现点击旋转轮盘效果,可以通过CSS动画和Vue的数据绑定结合完成。以下是一个完整的实现方案: 准备工作 需要安装Vue.js环境,可以通过CDN引入或使用Vue C…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…