当前位置:首页 > VUE

vue实现拦截器

2026-02-21 08:00:35VUE

Vue 实现拦截器的方法

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

vue实现拦截器

使用 Axios 拦截器

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

vue实现拦截器

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,可以通过封装函数实现拦截功能:

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 实现好评弹框的方法 使用 Vue 实现好评弹框可以通过组件化方式完成,结合动态数据绑定和事件处理。以下是具体实现步骤: 1. 创建弹框组件 新建一个 RatingDialog.vue…

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <…

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转…

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API met…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现RTMP

vue实现RTMP

Vue 中实现 RTMP 流播放 RTMP(Real-Time Messaging Protocol)是一种用于实时音视频流传输的协议。在 Vue 中实现 RTMP 播放通常需要借助第三方库或播放器。…