当前位置:首页 > VUE

vue实现http拦截

2026-03-28 09:18:09VUE

Vue 中实现 HTTP 拦截

在 Vue 中,通常使用 axios 作为 HTTP 客户端,并通过其拦截器功能实现请求和响应的拦截。以下是实现 HTTP 拦截的具体方法:

安装 axios

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

vue实现http拦截

npm install axios

创建 axios 实例并配置拦截器

src 目录下创建 utils/request.js 文件,用于封装 axios 实例和拦截器逻辑:

import axios from 'axios';

// 创建 axios 实例
const service = axios.create({
  baseURL: 'https://api.example.com', // API 基础地址
  timeout: 5000, // 请求超时时间
});

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

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    // 对响应数据做处理
    const res = response.data;
    if (res.code !== 200) {
      // 处理业务逻辑错误
      return Promise.reject(new Error(res.message || 'Error'));
    }
    return res;
  },
  (error) => {
    // 处理 HTTP 错误(如 401、404 等)
    if (error.response.status === 401) {
      // 跳转到登录页
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

export default service;

在 Vue 组件中使用封装的请求

在组件中导入封装的 axios 实例并发送请求:

vue实现http拦截

import request from '@/utils/request';

export default {
  methods: {
    fetchData() {
      request.get('/user/info')
        .then((response) => {
          console.log(response);
        })
        .catch((error) => {
          console.error(error);
        });
    },
  },
};

全局错误处理

如果需要全局捕获未处理的请求错误,可以在 main.js 中注册全局错误处理逻辑:

import request from '@/utils/request';

request.interceptors.response.use(
  (response) => response,
  (error) => {
    // 全局错误处理
    console.error('HTTP Error:', error.message);
    return Promise.reject(error);
  }
);

请求取消

通过 axiosCancelToken 可以取消请求,适用于页面切换时取消未完成的请求:

import axios from 'axios';

const CancelToken = axios.CancelToken;
let cancel;

request.get('/user/info', {
  cancelToken: new CancelToken((c) => {
    cancel = c;
  }),
});

// 取消请求
cancel();

通过以上方法,可以在 Vue 项目中高效地实现 HTTP 请求和响应的拦截,并统一处理错误、权限和业务逻辑。

标签: vuehttp
分享给朋友:

相关文章

vue实现组件循环

vue实现组件循环

Vue 组件循环的实现方法 在 Vue 中实现组件循环通常使用 v-for 指令,可以循环渲染数组或对象的数据到组件上。 基本数组循环 通过 v-for 指令遍历数组,渲染多个相同结构的组件。…

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &l…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue 2…

vue实现反馈

vue实现反馈

Vue 实现反馈功能的方法 在 Vue 中实现反馈功能可以通过多种方式,包括弹窗提示、Toast 消息、表单提交等。以下是几种常见的实现方法。 弹窗反馈 使用 Vue 的组件化特性创建一个弹窗组件,…