当前位置:首页 > VUE

vue axios 如何实现拦截

2026-01-21 06:19:16VUE

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

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

请求拦截器

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

vue axios 如何实现拦截

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

vue axios 如何实现拦截

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
分享给朋友:

相关文章

vue实现多选div

vue实现多选div

实现多选 DIV 的基本思路 在 Vue 中实现多选 DIV 功能,可以通过以下方法实现。主要思路是利用 v-model 绑定选中状态,结合 CSS 类名动态切换样式。 数据准备与模板结构 定义一…

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在V…

vue菜单实现

vue菜单实现

Vue 菜单实现方法 使用 Element UI 的菜单组件 Element UI 提供了现成的菜单组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用 el-menu 相关组件。…

vue实现文字

vue实现文字

Vue 中实现文字显示的方法 在 Vue 中实现文字显示可以通过多种方式,包括插值表达式、指令、组件等。以下是几种常见的实现方法: 插值表达式 使用双大括号 {{ }} 进行文本插值,这是 Vue…

vue实现 toast

vue实现 toast

Vue 实现 Toast 组件 在 Vue 中实现 Toast 组件可以通过多种方式完成,以下是几种常见的方法: 使用全局组件和事件总线 创建一个全局的 Toast 组件,并通过事件总线或 Vue…