当前位置:首页 > VUE

vue实现http拦截

2026-02-10 23:17:44VUE

Vue 中实现 HTTP 拦截

在 Vue 中,通常通过 axios 库实现 HTTP 请求拦截。以下是具体实现方法:

安装 axios

通过 npm 或 yarn 安装 axios:

npm install axios

vue实现http拦截

yarn add axios

创建 axios 实例并设置拦截器

在项目中创建一个单独的文件(如 http.js)来配置 axios 实例和拦截器:

import axios from 'axios';

const http = axios.create({
  baseURL: 'https://api.example.com', // 设置基础 URL
  timeout: 5000, // 设置超时时间
});

// 请求拦截器
http.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    return response.data;
  },
  (error) => {
    // 对响应错误做点什么
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 处理未授权情况
          break;
        case 404:
          // 处理未找到资源情况
          break;
        default:
          // 其他错误处理
      }
    }
    return Promise.reject(error);
  }
);

export default http;

在 Vue 组件中使用

在 Vue 组件中导入配置好的 axios 实例并使用:

vue实现http拦截

import http from './http';

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

全局挂载 axios

如果需要全局使用,可以在 main.js 中挂载到 Vue 原型上:

import Vue from 'vue';
import http from './http';

Vue.prototype.$http = http;

之后在组件中可以直接使用:

this.$http.get('/data')
  .then(response => {
    console.log(response);
  });

注意事项

  • 拦截器的顺序很重要,先添加的拦截器会后执行。
  • 确保在请求拦截器中返回 config 对象,否则请求无法发送。
  • 响应拦截器中可以根据业务需求统一处理错误,如 token 过期跳转登录页。

通过以上方法,可以在 Vue 项目中实现 HTTP 请求和响应的拦截,统一处理授权、错误等情况。

标签: vuehttp
分享给朋友:

相关文章

vue 实现pdf

vue 实现pdf

在Vue中实现PDF功能 在Vue项目中实现PDF功能通常涉及PDF生成、预览或下载。以下是几种常见实现方式: 使用vue-pdf库预览PDF 安装依赖: npm install vue-pdf…

vue实现排序

vue实现排序

Vue 实现排序的方法 在 Vue 中实现排序可以通过多种方式完成,以下是一些常见的方法: 使用计算属性排序数组 计算属性非常适合对数据进行排序,因为它会在依赖的数据变化时自动更新。以下是一个示例:…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

vue实现computed

vue实现computed

Vue 中 computed 的实现原理 computed 属性是 Vue 的一个核心特性,它基于响应式依赖进行缓存,仅在依赖发生变化时重新计算。以下是 computed 的实现方式: 基本用法 在…

vue实现折叠

vue实现折叠

Vue 实现折叠功能 在 Vue 中实现折叠功能可以通过多种方式完成,以下介绍几种常见的方法。 使用 v-show 或 v-if 控制显示隐藏 通过 Vue 的指令 v-show 或 v-if 可以…