axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战

这篇具有很好参考价值的文章主要介绍了axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战

📋前言

在之前的文章 axios 实战进阶练习——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台 中,我们完成了这个基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的项目,其中项目的后端接口是用 Node.js 编写的,通过 axios 来获取接口,所以这篇文章我们来对这个 axios 进一步的封装。
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战


🎯为什么要封装 axios ?

这是前端开发中非常经典一个操作,同时也是一个面试会被问道的技术点,接下来我们从以下几个原因来看看为什么要封装 axios

  • 代码复用和可维护性:通过封装 axios ,可以将重复的HTTP请求逻辑进行抽象和封装,提高代码的复用性,避免在多个地方编写相同的请求代码。同时,封装后的 axios 实例也更易于维护和管理。
  • 统一的请求处理:封装 axios 可以实现对请求的统一处理。例如,可以在请求之前添加通用的请求头部、设置默认配置、统一处理错误等。这样可以减少重复的代码,并且确保所有请求都遵循相同的规范和处理逻辑。
  • 接口管理和版本控制:通过封装 axios ,可以将各个API接口进行集中管理,方便统一修改和维护。同时,可以通过封装实现接口版本控制,确保不同版本的接口请求正确对应相应的版本。
  • 拦截器的使用axios 提供了拦截器 (interceptors) 功能,可以在请求发送和响应返回时进行拦截和处理。通过封装axios,可以更方便地利用拦截器来实现请求和响应的统一处理、认证和授权、错误处理等操作。
  • 更好的扩展性和适应性:封装 axios 可以提供更好的扩展性和适应性。例如,可以根据业务需求,自定义一些通用的请求方法或拦截器,以满足特定的业务场景。

🎯如何封装 axios ?

上面也大致说了关于封装 axios 的一些必要性,接下来举一个封装的例子。

创建一个 axios 实例:首先,我们需要创建一个 axios 实例,并设置一些默认的配置。这样可以为后续的请求提供统一的配置。

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com', // 设置请求的基础URL
  timeout: 5000, // 设置请求超时时间
  headers: {
    'Content-Type': 'application/json' // 设置请求头部
  }
});

export default instance;

定义请求方法:根据项目需求,可以定义不同的请求方法 (例如GET、POST等),并配置相应的拦截器和处理逻辑。

import axiosInstance from './axiosInstance';

// GET请求示例
export function get(url, params) {
  return axiosInstance.get(url, { params })
    .then(response => {
      // 请求成功处理逻辑
      return response.data;
    })
    .catch(error => {
      // 请求失败处理逻辑
      throw error;
    });
}

// POST请求示例
export function post(url, data) {
  return axiosInstance.post(url, data)
    .then(response => {
      // 请求成功处理逻辑
      return response.data;
    })
    .catch(error => {
      // 请求失败处理逻辑
      throw error;
    });
}

// 其他请求方法类似

使用封装的请求方法:在项目中使用封装的请求方法,发送具体的请求。

import { get, post } from './api';

// 发送GET请求
get('/users', { id: 1 })
  .then(data => {
    // 请求成功处理逻辑
    console.log(data);
  })
  .catch(error => {
    // 请求失败处理逻辑
    console.error(error);
  });

// 发送POST请求
post('/login', { username: 'admin', password: '123456' })
  .then(data => {
    // 请求成功处理逻辑
    console.log(data);
  })
  .catch(error => {
    // 请求失败处理逻辑
    console.error(error);
  });

// 其他请求使用方法类似

🎯对项目的 axios 进一步封装

通过上面内容,我们也清楚了为什么要封装 axios 了,同时也通过简单的案例演示,学习了如何封装 axios ,接下来我们对上一篇文章的联系人列表管理后台的 axios 进行封装。

首先在 src 文件夹中新建一个文件夹 service ,并在其中创建一个 contactService.js 文件夹,然后在该文件夹中对 axios 进行统一格式封装,代码如下。
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战

export default {
  //添加联系人
  insert: {
    method: "post",
    url: "insert",
  },
  //删除联系人
  delete: {
    method: "delete",
    url: "delete",
  },
  //修改联系人
  update: {
    method: "put",
    url: "update",
  },
  //查询联系人列表
  select: {
    method: "get",
    url: "select",
  },
};

然后在 service 文件夹中继续创建一个 http.js 文件,在该文件中对 axiosservice/contactService.js 进行引用,代码如下。

import axios from "axios";
import service from "./contactService";
import { ElLoading, ElMessage } from "element-plus";
var loading = {
  _load: null,
  show() {
    this._load = ElLoading.service({
      text: "loading...",
    });
  },
  hide() {
    this._load.close();
  },
};

// axios默认数据
let instance = axios.create({
  baseURL: "http://127.0.0.1:9999/api/",
  timeout: 10000,
});

const Http = {};
for (let key in service) {
  let api = service[key];
  Http[key] = async function (params, isForData = false, config = {}) {
    let newParams = {};
    let response = {};
    if (params && isForData) {
      for (let i in params) {
        newParams.append(i, params[i]);
      }
    } else {
      newParams = params;
    }
    switch (api.method) {
      case "put":
      case "post":
      case "patch":
        try {
          response = await instance[api.method](api.url, newParams, config);
        } catch (err) {
          response = err;
        }
        break;
      case "get":
      case "delete":
        config.params = newParams;
        try {
          response = await instance[api.method](api.url, newParams, config);
        } catch (err) {
          response = err;
        }
        break;
    }
    return response;
  };
}

// 拦截器的添加
// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 请求中的加载提示
    loading.show();
    return config;
  },
  (err) => {
    // 请求错误
    loading.hide();
    ElMessage.error(JSON.stringify(err) + "请求错误");
  }
);
// 响应式拦截器
instance.interceptors.response.use(
  (res) => {
    // 响应成功
    loading.hide();
    return res.data;
  },
  (err) => {
    // 响应错误
    loading.hide();
    ElMessage.error(JSON.stringify(err) + "响应错误");
  }
);
export default Http;

这里局部调用 Http ,找到项目中有用到原生调用 axios 的地方通过 import Http from "@/service/http"; 引入 Http
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战
比如说,项目中的 refreshList() 方法,我们需要这个方法获取到联系人列表的数据,我们把原生的 axios 方法注释掉,然后通过 用封装的 Http 来重新实现这个方法,具体操作如下。
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战
修改后的方法如下。
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战

const refreshList = async () => {
  let res = await Http.select();
  contactList.list = res.data.data;
  console.log(contactList.list);
};

然后我们可以看到页面的数据同样渲染出来了,而且控制台也输出了 contactList.list 的内容。
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战
采用封装后的 axios 来读取联系人列表显得特别精干、简练,除此之外我们也可以通过相同的方法对添加、删除、修改联系人的请求方法进行改造。还有一点要注意的是,在项目不是非常庞大的情况下,还是要慎用 asyncawait 的异步方法,因为题目可能会导致连同调用它们的方法体也做异步处理。


📝最后

到此,就是文章的全部内容了,通过这篇文章,我们了解学习了如何封装 axios ,以及通过简单的案例了解封装的步骤和方法,最后通过对项目 (基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台)axios 进行封装实战,加深了封装 axios 的操作和方法。
axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战
文章来源地址https://www.toymoban.com/news/detail-514755.html

到了这里,关于axios 实战进阶练习( axios 封装篇)——基于 Vue3 + Node.js + ElementPlus 实现的联系人列表管理后台的 axios 封装实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3和TypeScript下基于Axios的二次封装教程

    学习如何在Vue3项目中使用TypeScript和Axios进行二次封装,实现更灵活的网络请求处理。详细教程包括拦截器设置和类型扩展。

    2024年02月05日
    浏览(136)
  • 基于Vue、Axios、Node.js的图书管理系统【网页前端高级编程】

    本图书管理系统是基于Vue、Ajax、Node.js等技术的管理系统,笔者给其命名为阳光图书管理系统,意味着我们这个年纪应该活得洒脱像阳光一样,应充满活力与信心。再此感谢老师朋友的悉心指导,由于此系统是笔者初次完成的一个小型管理系统,必定有许多纰漏,如有不足请指正。

    2024年02月09日
    浏览(157)
  • vue3【使用axios并封装axios请求】

    第一步:安装axios 第二步:编写请求文件 新建request.js 简单的axios封装,里面相关提示信息,自己可以引入element-plus去添加

    2024年02月04日
    浏览(64)
  • axios封装—vue3项目

    前言 axios的API很友好,可以在项目中直接使用。但是在大型项目中,http请求很多,且需要区分环境, 每个网络请求有相似需要处理的部分,会导致代码冗余,破坏工程的可维护性,扩展性,所以需要对axios请求进行相应的封装 正文 安装axios 封装请求api 1. 在src目录下新建个

    2024年02月07日
    浏览(78)
  • Vue3+Axios网络请求封装

    本文将详细介绍一款基于Axios+Typescript封装的网络请求库,该库可以自动携带token、拦截请求和响应等操作,并能够处理请求重复、超时和错误状态码等异常情况。 Axios 是基于Node.js的HTTP客户端,也是一款广泛使用的网络请求库。它具有使用简单、可扩展性高、易用性好等特点

    2024年02月07日
    浏览(49)
  • vue3中axios整体封装

    在 vue3.x 版本中进行封装 使用 promise 封装 post 和 get 方法 api 作为单独模块维护 适配 vue.config.js 中 proxy 代理 结合 async 和 await 1 安装 2 创建http模块 在 src 目录下,创建 request 文件夹,并在该文件夹下,新建 http.js 文件 3 创建单独的api模块 4 在业务代码中使用 5 在vue.config.js中配

    2024年02月17日
    浏览(47)
  • Vue3初学者详细教程之zip安装Node.js版本v16.6.0、vue/cli版本4.5.13、element-ui版本2.15.6、axios版本0.25.0

    《Node.js v16.6.0官网下载》 在node文件夹里面创建2个文件夹分别是node_cache和node_global 在解压路径文件夹cmd输入以下命令创建2个文件夹 新建系统变量NODE_HOME 编辑Path系统变量 测试nodejs环境变量是否生效 cmd运行 node -v 命令,输出版本号说明成功 以系统管理员的身份打开cmd命令提

    2024年02月07日
    浏览(97)
  • Vue3的axios请求封装,请求拦截,相应拦截

    对于三者放在Service.js中封装,方便使用 axios.create  的作用是创建一个新的  axios  实例,该实例可以具有自定义配置。通过使用  axios.create ,您可以为任何 API 生成一个客户端,并在使用同一客户端的任何调用中重复使用相同的配置。这使得在应用程序中使用多个 API 时更加

    2024年02月03日
    浏览(47)
  • Vue3创建项目(四)axios封装及接口配置

    项目结构:  目录  🍉🍉🍉index.ts  🍉🍉🍉 api.ts 看完需要预计花费10分钟。 请求拦截器与响应拦截器  阅读下面代码需先了解以下内容:         请求拦截器:     请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,每次请求携带token传给

    2024年02月03日
    浏览(59)
  • vue3+vite的axios的封装与全局使用

    1.安装axios 使用npm 或 yarn 安装axios到项目中 // 使用pnpm 安装   pnpm install axios // 使用npm 安装   npm install axios // 使用yarn 安装  yarn add axios axios是一个基于Promise的HTTP请求库,支持Promise API、可以拦截请求和响应、可以转换请求和响应数据、支持取消请求、可以自动转换JSON数据

    2024年02月02日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包