【vue2小知识】实现axios的二次封装

news2025/9/18 3:44:13

1d43f75f092a4050a8ce31e2d85f6868.gif

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:在vue2中实现axios的二次封装

目录

一、平常axios的请求发送方式

二、axios的一次封装

三、axios的二次封装

 四、总结


【前言】我们在使用axios发送请求的时候,如果是直接使用axios用来发送我们的请求,这样的话我们需要写url、请求方式methood、如果有请求参数的话我们的axios的代码段会看起来稍微有点多并且的话我们的代码段统一的管理与后期的修改。故此在此基础上我们就需要对我们的axios进行封装来便于我们对我们接口的统一管理同时也使得代码看起来简洁。


一、平常axios的请求发送方式

 我们进页面进行发送请求见下:

 可以看到我们的请求可以成功的将我们的请求发出去并且可以收到响应。这是最基础的发送方式,我们可以看到

①我们的url中有很多重复的部分

②每个页面都这样写请求代码段多

③业务没有抽离开,不便于我们管理我们接口(多组件的时候)

 综上,我们简化一下我们的请求见下↓

二、axios的一次封装

我们会在src/utils创建一个request.js的文件来存放我们的基地址与拦截器

当我们写了基地址我们每次写请求的时候就不需要写那一大段重复的代码

/* 封装axios用于发送请求 */
import axios from 'axios'

/*
(1)request 相当于 Axios 的实例对象
(2)为什么要有request,而不是直接用axios
  * 项目开发中,有可能会有两个基地址
  * 不同的接口配置不同(有的要token,有的不要token)
*/
const request = axios.create({
  baseURL: '/home/', // 设置基地址,博主这个请求跨域了因此我设置了代理服务器,因此基地址才这么短
  timeout: 5000 // 请求超时:当5s没有响应就会结束请求
})

// 添加请求拦截器,一下内容是axios的拦截器,可以不用写
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
request.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response.data
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default request

 可见当我们写下了基地址之后我们就完成我们的第一次封装,引入了基地址与拦截器

三、axios的二次封装

把接口的路径写在了页面里面 : 如果接口很多,万一以后接口路径变了。怎么办呢? 一个一个文件去找是不是太麻烦了?

解决方案 : 把每一个请求接口单独封装

通俗一点来说:我们根据我们的业务来写当前页面需要的接口,这样接口便于管理。比如:我A页面需要三个接口,B页面需要五个接口。我们在一个js文件中写下八个接口吗?可以但是不推荐。

我们可以尝试将A与B两个页面的接口分离出来。

类似于这样的:

 好的,基本概念了解了,我们尝试来抽离下我们的接口

 我们来测试下:

【源代码以及接口文档补充】

下面是我的接口的地址:

 

App.vue

<template>
<div>
  <button @click="doclick">点我发送请求1</button>
  <button @click="doclick2(6)">点我发送请求2</button>
</div>
</template>

<script>
import { loadCaatagory } from '@/api/B'
import { loadBrand } from '@/api/A'

export default {
  methods: {
    async doclick () {
      const res = await loadCaatagory()
      console.log(res, '请求1')
    },
    async doclick2 (num) {
      const res = await loadBrand(num)
      console.log(res, '请求2')
    }
  }
}
</script>

<style>

</style>

 A.js

import request from '@/utils/request'

// 获取品牌
export function loadBrand (limit) {
  return request({
    // url: 'brand',
    url: `brand?limit=${limit}`,
    method: 'GET'
  })
}

B.js

import request from '@/utils/request'
// 获取商品头部
export function loadCaatagory () {
  return request({
    url: 'category/head',
    method: 'GET'
  })
}

vue.config

module.exports = {
  transpileDependencies: true,
  devServer: {
    proxy: {
      '/home': {
        target: 'http://pcapi-xiaotuxian-front-devtest.itheima.net' // 请求代理地址用来解决跨域
      }
    }
  }
}

 四、总结

我们封装axios是为了将我们的接口根据模块的不同而分离开来,便于我们的管理。

第一次封装:提取公共部分

第二次封装:根据业务模块分离接口

愿你有所收获,本文就此结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python自动获取海量ip,再也不用愁被封啦~

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 本次网站&#xff1a; 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用&#xff1a; import parsel >>> pip install parsel…

【华为OD机试模拟题】用 C++ 实现 - 单词接龙(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

【自动化测试入门】Selenium基础(建议收藏)

selenium简介 1、什么是Selenium Selenium 是支持 Web 浏览器自动化的一系列工具和库的综合项目。 它提供了扩展来模拟用户与浏览器的交互&#xff0c;用于扩展浏览器分配的分发服务器&#xff0c; 以及用于实现 W3C WebDriver 规范的基础结构&#xff0c; 该 规范 允许您为…

springboot+vue.js协同过滤算法之智能旅游推荐系统java

目 录 第一章 绪论 3 1.1课题背景 3 1.2课题研究的目的和意义 3 1.3 研究现状 4 1.4论文所做的主要工作 4 第二章 技术介绍 5 2.1B/S结构 5 2.2MySQL 介绍 5 2.3MySQL环境配置 6 第三章 系统分析与设计 8 3.1系统说明 8 3.2系统可行性分析…

力扣18.四数之和

文章目录力扣18.四数之和题目描述C语言深搜回溯&#xff0c;在超时的边缘....力扣18.四数之和 题目描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &…

【Linux】进程间通信介绍 | 管道

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;进程间通信…

【华为OD机试模拟题】用 C++ 实现 - 数字的排列(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 分积木(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 吃火锅(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - RSA 加密算法(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 构成的正方形数量(2023.Q1) 【华为OD机试模拟…

【华为OD机试模拟题】用 C++ 实现 - 非严格递增连续数字序列(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

独家 | 6个Python数据科学库正在狂飙,你一定要学来提升文化素养

作者&#xff1a;Bex T翻译&#xff1a;wwl 校对&#xff1a;张睿毅本文约3200字&#xff0c;建议阅读8分钟 计算类数据科学库&#xff0c;已经不再局限在Pandas、NumPy、Scikit-learn之内了&#xff01;动机2023年的开始&#xff0c;自然需要探索数据科学和机器学习的新趋势。…

ABBYYFineReader15免费电脑pdf文档文字识别软件

ABBYYFineReader是一款OCR文字识别软件&#xff0c;它可以对图片、文档等进行扫描识别&#xff0c;并将其转换为可编辑的格式&#xff0c;比如Word、Excel等&#xff0c;操作也是挺方便的。 我们在官网找到该软件并进行下载&#xff0c;打开软件后&#xff0c;选择转换为“Mic…

CSS 定位网页元素【快速掌握知识点】

目录 前言 一、position: static 二、position: relative 三、position: absolute 四、position: fixed 五、position: sticky 前言 当我们在设计网页时&#xff0c;经常需要对网页中的元素进行定位&#xff0c;以便它们出现在我们想要的位置。在 CSS 中&#xff0c;我们…

【华为OD机试模拟题】用 C++ 实现 - 报数(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

python+django协同过滤算法的电影推荐系统

&#xff08;1&#xff09;管理员功能需求 管理员登陆后&#xff0c;主要模块包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;电影分类管理&#xff0c;免费电影管理&#xff0c;付费电影管理&#xff0c;电影订单管理&#xff0c;我的电影管理&#xff0c;电影…

git status输出的文件路径的中文乱码问题

在项目下输入git status之后&#xff0c;出现如下情况&#xff1a;在线搜索了一下&#xff0c;发现是git添加了如下特性&#xff1a;git参考文档&#xff1a;https://git-scm.com/docs/git-config根据上面的文档得知&#xff0c;git对超过0x80的字符都会以八进制输出&#xff0…

CMake调试器出炉:调试你的CMake脚本

Visual Studio 开发团队一直和 Kitware 紧密合作&#xff0c;致力于开发一个用于调试 CMake 脚本的调试器。 我们将继续这个工作&#xff0c;以便开发人员社区可以通过添加新功能和对其他 DAP 功能的支持来共同改进它。 我们很高兴地宣布&#xff0c;CMake 调试器的预览版现在…

java Spring JdbcTemplate配合mysql实现数据库表数据添加

本文为 java Spring JdbcTemplate 准备工作的续文 如果您还没有大家好JdbcTemplate 的基础环境 可以先查看前文 首先 之前数据库我们已经弄好了 然后 我们在下面创建一个表 我这里叫 user_list 每一个数据库表 要对应一个实体类 这里 我们打开上一文搭建的项目环境 src下创建…

Hive---排序

Hive语法之排序 文章目录Hive语法之排序全局排序&#xff08;Order By&#xff09;升序降序按照别名排序多个列排序每个 Reduce 内部排序&#xff08;Sort By&#xff09;设置 reduce 个数查看设置 reduce 个数分区排序&#xff08;Distribute By&#xff09;设置 reduce 个数簇…

【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 分积木(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 吃火锅(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - RSA 加密算法(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 构成的正方形数量(2023.Q1) 【华为OD机试模拟…

用数据讲故事:基于分析场景的17条Python使用小结

数据科学的编程需要非常灵活的语言&#xff0c;以最少的代码处理复杂的数据建模场景。作为一名数科小白&#xff0c;我对Python的第一认知是丰富的机器学习算法&#xff0c;但Python有超过12万个第三方库&#xff0c;覆盖从数据预处理、统计分析、数据挖掘及可视化等各种日常数…

linux环境下docker中搭建 jenkins 及自定义访问路径,利用nginx反向代理

前言 前两天发布了完整的 linux服务器上Docker中安装jenkins 在实际的开发中&#xff0c;可能我们并不能直接开放8081端口&#xff0c;常常是通过nginx方向代理来实现的&#xff0c;这里我们来配置一下。 linux环境下docker中搭建 jenkins 及自定义访问路径&#xff0c;nginx反…