当前位置:首页 > VUE

vue实现axio请求

2026-02-17 21:21:49VUE

Vue 中使用 Axios 发起 HTTP 请求

Axios 是一个基于 Promise 的 HTTP 客户端,适用于浏览器和 Node.js。在 Vue 项目中,可以通过以下方式集成并使用 Axios。

安装 Axios

通过 npm 或 yarn 安装 Axios:

npm install axios
# 或
yarn add axios

全局配置 Axios

在 Vue 项目的入口文件(如 main.js)中全局引入 Axios,并配置默认选项:

import axios from 'axios';

// 设置默认 baseURL
axios.defaults.baseURL = 'https://api.example.com';

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

// 响应拦截器
axios.interceptors.response.use(response => {
  // 对响应数据预处理
  return response.data;
}, error => {
  // 统一处理错误
  return Promise.reject(error);
});

// 挂载到 Vue 原型链
Vue.prototype.$http = axios;

发起请求示例

在 Vue 组件中直接调用 Axios 发起请求:

GET 请求

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

POST 请求

this.$http.post('/users', { name: 'John', age: 30 })
  .then(response => {
    console.log(response);
  })
  .catch(error => {
    console.error(error);
  });

并发请求 使用 axios.allaxios.spread 处理多个并发请求:

axios.all([
  this.$http.get('/users/1'),
  this.$http.get('/users/2')
]).then(axios.spread((user1, user2) => {
  console.log(user1, user2);
}));

封装为独立模块

可以将 Axios 封装为独立的服务模块,便于统一管理 API:

创建 api.js

import axios from 'axios';

const api = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 5000
});

export default {
  getUsers() {
    return api.get('/users');
  },
  createUser(data) {
    return api.post('/users', data);
  }
};

在组件中使用

import api from '@/services/api';

export default {
  methods: {
    fetchUsers() {
      api.getUsers()
        .then(response => {
          console.log(response);
        });
    }
  }
};

注意事项

  • 使用 async/await 简化异步代码:

    async fetchData() {
      try {
        const response = await this.$http.get('/users');
        console.log(response);
      } catch (error) {
        console.error(error);
      }
    }
  • 取消请求:

    const source = axios.CancelToken.source();
    this.$http.get('/users', { cancelToken: source.token })
      .then(response => { /* ... */ })
      .catch(thrown => {
        if (axios.isCancel(thrown)) {
          console.log('Request canceled:', thrown.message);
        }
      });
    
    // 取消请求
    source.cancel('Operation canceled by user.');

通过以上方法,可以在 Vue 项目中高效地使用 Axios 处理 HTTP 请求。

vue实现axio请求

标签: vueaxio
分享给朋友:

相关文章

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue 实现grid

vue 实现grid

在Vue中实现Grid布局可以通过多种方式完成,以下是几种常见的方法: 使用CSS Grid布局 CSS Grid是一种强大的布局系统,可以直接在Vue组件的样式中使用。以下是一个简单的示例:…

jq 实现 vue

jq 实现 vue

jq 实现 Vue 的核心功能 jq 是一个轻量级的 JavaScript 库,主要用于 DOM 操作和事件处理。虽然它不能完全替代 Vue,但可以通过一些技巧模拟 Vue 的核心功能,如数据绑定、事…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…