当前位置:首页 > VUE

vue实现拦截器

2026-02-21 08:00:35VUE

Vue 实现拦截器的方法

在 Vue 中实现拦截器通常用于全局处理 HTTP 请求和响应,例如添加认证头、统一错误处理等。以下是几种常见的方法:

使用 Axios 拦截器

Axios 是 Vue 中常用的 HTTP 客户端,支持请求和响应拦截。

import axios from 'axios';

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

// 响应拦截器
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response.status === 401) {
      // 处理未授权错误
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

使用 Vue Resource 拦截器

如果使用的是 Vue Resource(Vue 1.x 或 2.x 的插件),可以通过以下方式实现拦截器:

import Vue from 'vue';
import VueResource from 'vue-resource';

Vue.use(VueResource);

// 请求拦截器
Vue.http.interceptors.push((request, next) => {
  const token = localStorage.getItem('token');
  if (token) {
    request.headers.set('Authorization', `Bearer ${token}`);
  }
  next();
});

// 响应拦截器
Vue.http.interceptors.push((request, next) => {
  next(response => {
    if (response.status === 401) {
      router.push('/login');
    }
    return response;
  });
});

使用 Fetch API 拦截器

如果使用原生 Fetch API,可以通过封装函数实现拦截功能:

vue实现拦截器

const fetchWithInterceptor = async (url, options = {}) => {
  const token = localStorage.getItem('token');
  if (token) {
    options.headers = {
      ...options.headers,
      Authorization: `Bearer ${token}`
    };
  }

  const response = await fetch(url, options);
  if (response.status === 401) {
    router.push('/login');
    throw new Error('Unauthorized');
  }
  return response;
};

拦截器的常见应用场景

  • 认证处理:自动添加 token 到请求头。
  • 错误处理:统一处理 401、404 等错误状态码。
  • 请求/响应日志:记录请求和响应的详细信息。
  • 数据格式化:统一处理返回的数据格式。

通过以上方法,可以灵活地在 Vue 项目中实现拦截器功能,满足不同的业务需求。

标签: 拦截器vue
分享给朋友:

相关文章

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为fa…

vue实现tag

vue实现tag

Vue 实现标签(Tag)功能 在 Vue 中实现标签(Tag)功能可以通过多种方式完成,以下是一些常见的方法和实现步骤: 使用动态组件和 v-for 通过 v-for 指令动态渲染标签列表,结合样…

vue alert实现

vue alert实现

使用 Vue 实现 Alert 组件 在 Vue 中实现 Alert 组件可以通过自定义组件或结合第三方库完成。以下是几种常见方法: 自定义 Alert 组件 创建一个可复用的 Alert 组件,通…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…

vue 实现分屏

vue 实现分屏

Vue 实现分屏的方法 使用 CSS Flexbox 或 Grid 布局 通过 CSS Flexbox 或 Grid 布局可以轻松实现分屏效果。在 Vue 组件中定义两个或多个区域,并使用 CSS 控…

vue实现mvvm

vue实现mvvm

Vue 实现 MVVM 模式 MVVM(Model-View-ViewModel)是一种前端架构模式,Vue 是其典型实现之一。MVVM 的核心是通过数据绑定和响应式系统实现视图与数据的自动同步。…