首页 > 其他分享 >Vue2 应用开发必备技能:构建优雅的 Axios 请求封装模块

Vue2 应用开发必备技能:构建优雅的 Axios 请求封装模块

时间:2024-12-17 10:27:25浏览次数:13  
标签:Axios return 请求 request Vue2 error 封装

Vue2 应用开发必备技能:构建优雅的 Axios 请求封装模块


在这里插入图片描述

前言

在 Vue2 项目中,数据请求是最常见的操作之一。使用 Axios 是一个非常流行的选择,但为了更方便地管理和维护代码,我们通常需要对请求进行封装。今天,我将手把手教你如何封装 Axios 请求,让你的代码更加简洁、优雅。

第一步:安装 Axios

在项目中使用 Axios,需要先安装它。如果你还没有安装 Axios,可以通过以下命令完成:

npm install axios

安装完成后,你可以在项目中引用它。


第二步:创建 Axios 封装模块

在项目目录下,新建一个文件夹 utils,然后创建一个文件 request.js,用于封装 Axios。
在 request.js 文件中,进行如下操作:

1. 引入 Axios

import axios from 'axios';

2. 创建 Axios 实例

const service = axios.create({
  baseURL: 'https://api.example.com', // 基础路径,根据你的接口地址修改
  timeout: 5000 // 请求超时时间
});

3. 请求拦截器

通过请求拦截器,可以在发送请求前做一些处理,比如添加 Token:

service.interceptors.request.use(
  config => {
    // 在这里可以为请求添加自定义头部,比如 Token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    // 处理请求错误
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

4. 响应拦截器

通过响应拦截器,可以统一处理接口响应数据或错误信息:

service.interceptors.response.use(
  response => {
    const res = response.data;
    // 根据接口文档,处理响应数据
    if (res.code !== 200) {
      console.error('请求失败:', res.message);
      return Promise.reject(new Error(res.message || 'Error'));
    } else {
      return res;
    }
  },
  error => {
    // 处理响应错误
    console.error('响应错误:', error);
    return Promise.reject(error);
  }
);

5. 导出封装的实例

export default service;

第三步:封装具体接口请求

接下来,我们可以基于封装的 Axios 实例,创建具体的 API 请求方法。
在 utils 文件夹下,新建一个文件 api.js,如下编写:

import request from './request';
// 获取用户信息
export function getUserInfo(userId) {
  return request({
    url: `/user/${userId}`,
    method: 'get'
  });
}
// 提交用户数据
export function submitUserData(data) {
  return request({
    url: '/user/submit',
    method: 'post',
    data
  });
}

第四步:在 Vue 组件中使用

现在,我们已经完成了 Axios 的封装,可以在 Vue 组件中直接使用这些 API 方法。
例如:

<template>
  <div>
    <h1>User Info</h1>
    <div v-if="user">
      <p>Name: {{ user.name }}</p>
      <p>Email: {{ user.email }}</p>
    </div>
  </div>
</template>

<script>
import { getUserInfo } from '@/utils/api';

export default {
  data() {
    return {
      user: null
    };
  },
  methods: {
    async fetchUserInfo() {
      try {
        const userId = 1; // 示例用户 ID
        const response = await getUserInfo(userId);
        this.user = response.data;
      } catch (error) {
        console.error('获取用户信息失败:', error);
      }
    }
  },
  created() {
    this.fetchUserInfo();
  }
};
</script>

总结

通过封装 Axios,我们可以:

  • 统一管理请求的基础配置;
  • 方便地添加请求或响应的全局处理逻辑;
  • 在项目中轻松复用和维护接口请求。

标签:Axios,return,请求,request,Vue2,error,封装
From: https://blog.csdn.net/2301_80346402/article/details/144475853

相关文章

  • python 的GUI封装
    python的GUI封装功能扩展点进度条控件:增加对ttk.Progressbar的支持,用于展示进度。列表框控件:提供Listbox的创建方法,用于展示和选择多项数据。复选框和单选按钮:Checkbutton和Radiobutton控件的支持。画布和图形支持:提供Canvas控件,用于绘制图形或复杂的......
  • Vue2打造科技范十足的个人博客:炫酷特效 + 精美布局 + 完整源码 【前端实战】Vue2瀑布
    效果图......
  • vue2 脚手架安装及使用
    1.安装npminstall-g@vue/cli2.查看版本 vue-V3.使用3.1命令形式vuecreatemy-project   3.2可视化操作       ......
  • vue2 配置 mock.js 模拟后端数据
    安装mockj首先确保你有一个vue2项目,如果没有,可以用VueCLI创建一个:vuecreatevue-mock-demo开始安装Mock.jsnpminstallmockjs--save-dev创建Mock配置文件在项目的src目录下新建一个文件夹mock,并在其中创建index.js文件,用于编写模拟接口。例如(src/mock......
  • Vue2 - 最新详细实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持
    前言如果您需要Vue3版本,请访问。在vue2|nuxt2项目开发中,详解实现预览excel表格功能,在浏览器中直接打开xls/xlsx文件并渲染效果,文件来源可以是在线url地址、前端调用api接口获取文件流(先下载)等,预览方式可以新开浏览器页签或者自定义弹框等方式,兼容任意高低版本浏......
  • Vue2-第二版-后台管理系统项目实战/vue+element-ui/vue经典全套系统案例讲解
    Vue2-第二版-后台管理系统项目实战/vue+element-ui/vue经典全套系统案例讲解https://www.bilibili.com/video/BV1j5411o7xHP101采购系统-项目介绍P202采购系统-项目分类P303采购系统-项目搭建P404采购系统-后端数据库导入P505采购系统-项目初始化P606采购系统-la......
  • Vue2.0+Node.js+MongoDB全栈打造商城系统
    Vue2.0+Node.js+MongoDB全栈打造商城系统F:\Vue教程\Vue2.0+Node.js+MongoDB全栈打造商城系统\第1章课程介绍1.1导学.mp4vue框架对比Vue和React对比.Angular提供的更多是一整套解决方案,后者更像是一个生态.Vue和React目前都使用了VirtualDomvue框架对比Vue·模板和渲染......
  • Vue2.5开发去哪儿网App
    Vue2.5开发去哪儿网App从零基础入门到实战项目F:\Vue教程\Vue2.5开发去哪儿网App从零基础入门到实战项目\第1章课程介绍1-1.mp4@DellLeenuxtjsweexjsF:\Vue教程\Vue2.5开发去哪儿网App从零基础入门到实战项目\第2章Vue起步2-1.mp4https://coding.imooc.com/lesson......
  • 案例-商品列表(组件封装)
      标签组件封装1.双击显示,自动聚焦2.失去焦点,隐藏输入框标签一列,不同行的标签内容不同,但是除此之外其他基本一致,所以选择用标签组件将这一部分封装为一个组件,需要时组件标签展示。首先标签处一进去就是显示的“茶具”双击之后才显示输入框。所以输入框和“茶具”......
  • 路由封装,连接导航router-link
    路由的封装抽离:所有路由配置堆在main.js中不合适,需将路由模块抽离出来,以便维护将与路由相关信息提取到src文件夹下的router文件夹下的index.js文件中在main.js中就只需要导入当前路由,并且注入到当前实例中,其他与路由相关信息全剪切到index.js中 //index.js//......