当前位置:首页 > VUE

vue实现请求拦截

2026-02-19 03:50:25VUE

Vue 中实现请求拦截的方法

在 Vue 项目中,通常使用 axios 作为 HTTP 客户端。通过 axios 的拦截器(interceptors)功能,可以轻松实现请求和响应的拦截处理。

安装 axios

确保项目中已安装 axios,可以通过以下命令安装:

npm install axios

创建 axios 实例并设置拦截器

src 目录下创建一个文件(如 http.js),配置 axios 实例和拦截器:

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com', // 根据实际接口地址修改
  timeout: 5000,
});

// 请求拦截器
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) => {
    // 对响应数据统一处理
    return response.data;
  },
  (error) => {
    // 对错误响应统一处理
    if (error.response.status === 401) {
      alert('登录过期,请重新登录');
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

export default instance;

在 Vue 组件中使用

在组件中引入配置好的 axios 实例,直接发起请求:

import http from '@/http';

export default {
  methods: {
    fetchData() {
      http.get('/user').then((res) => {
        console.log(res);
      });
    },
  },
};

拦截器的常见用途

  1. 添加请求头:如自动添加 AuthorizationContent-Type
  2. 请求参数处理:统一格式化请求数据。
  3. 错误处理:全局捕获 401、404 等状态码并跳转页面。
  4. 加载状态管理:通过拦截器控制全局加载动画的显示与隐藏。

结合 Vuex 使用

如果需要结合 Vuex 管理全局状态(如 token),可以在拦截器中调用 Vuex 的 store:

vue实现请求拦截

import store from '@/store';

instance.interceptors.request.use((config) => {
  const token = store.state.token;
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

通过以上方法,可以灵活实现 Vue 项目中的请求拦截功能,提升代码复用性和可维护性。

标签: vue
分享给朋友:

相关文章

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…

vue实现微云

vue实现微云

Vue 实现微云功能 使用 Vue 实现类似微云的网盘功能需要结合前端框架、后端存储及文件处理技术。以下是关键实现步骤和代码示例: 前端框架搭建 使用 Vue CLI 创建项目基础结构,安装必要依赖…

vue实现tip

vue实现tip

Vue实现Tooltip的方法 使用Vue实现Tooltip可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML的title属性 在Vue模板中直接使用HTML的title属性是最简单的实…

vue实现按钮渐变

vue实现按钮渐变

实现按钮渐变的几种方法 使用CSS线性渐变 通过CSS的background属性结合linear-gradient函数实现颜色渐变效果。在Vue组件的<style>部分直接定义样式: .…