返回顶部
首页 > 资讯 > 前端开发 > html >如何使用Axios
  • 1231
分享到

如何使用Axios

2024-04-02 19:04:59 1231人浏览 薄情痞子
摘要

本篇内容介绍了“如何使用AxiOS”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、灵魂四连问1.1 为什

本篇内容介绍了“如何使用AxiOS”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、灵魂四连问

1.1 为什么要读源代码

如何使用Axios

1.2 如何选择项目

如何使用Axios

1.3 如何阅读源码

如何使用Axios

1.4 有实际的案例么

如何使用Axios

二、如何品读 Axios?

2.1 走进 Axios

Axios 是一个基于 Promise 的 Http 客户端,同时支持浏览器和 node.js 环境。它是一个优秀的 HTTP  客户端,被广泛地应用在大量的 WEB 项目中。

如何使用Axios

由上图可知,Axios 项目的 Star 数为 「78.1K」,Fork 数也高达 「7.3K」,是一个很优秀的开源项目,所以值得大家细细品读。

2.2 发现 Axios 的美

在确认 Axios 为 “追求目标” 之后,下一步我们就需要来发现它身上的优点(特性):

如何使用Axios

每个人对 “美”  都有不同的看法,对于阿宝哥来说,我看中了图中已选中的三点。因此,它们也很光荣地成为读源码的三个切入点。当然切入点也不是越多越好,可以先找自己最感兴趣的地方作为切入点。需要注意的是,如果切入点之间有关联关系的话,建议做个简单的排序

2.3 感受 Axios 的美

选择切入点之后,我们就可以开始逐一感受 Axios 的设计之美。以 「能够拦截请求与响应」  这个切入点为例,首先我们就会接触到 「拦截器」 的概念。所以我们需要先了解拦截器是什么、拦截器有什么作用以及如何使用拦截器,这里我们可以从项目的  「官方文档」或者项目中的 「README.md」 文档入手。

2.3.1 拦截器的作用

Axios 提供了请求拦截器和响应拦截器来分别处理请求和响应,它们的作用如下:

  • 请求拦截器:该类拦截器的作用是在请求发送前统一执行某些操作,比如在请求头中添加 token 字段。

  • 响应拦截器:该类拦截器的作用是在接收到服务器响应后统一执行某些操作,比如发现响应状态码为 401 时,自动跳转到登录页。

2.3.2 拦截器的使用

// 添加请求拦截器 —— 处理请求配置对象 axios.interceptors.request.use(function (config) {   config.headers.token = 'added by interceptor';   return config; });  // 添加响应拦截器 —— 处理响应对象 axios.interceptors.response.use(function (data) {   data.data = data.data + ' - modified by interceptor';   return data; });  axios({   url: '/hello',   method: 'get', }).then(res =>{   console.log('axios res.data: ', res.data) });

在了解完拦截器的作用和用法之后,我们就会把焦点聚焦到 「axios」  对象,因为注册拦截器和发送请求都与它有紧密的联系。不过在看具体源码之前,阿宝哥建议先对功能点做一下梳理。以下是阿宝哥的分析思路:

Axios 的作用是用于发送 HTTP 请求,请求拦截器和响应拦截器分别对应于 HTTP  请求的不同阶段,它们的本质是一个实现特定功能的函数。这时我们就可以按照功能把发送 HTTP 请求拆解成不同类型的子任务,比如有  「用于处理请求配置对象的子任务」,「用于发送 HTTP 请求的子任务」 和  「用于处理响应对象的子任务」。当我们按照指定的顺序来执行这些子任务时,就可以完成一次完整的 HTTP 请求。

既然已经提到了任务,我们就会联想到任务管理系统的基本功能:任务注册、任务编排(优先级排序)和任务调度等。因此我们就可以考虑从  「任务注册、任务编排和任务调度」 三个方面来分析 Axios 拦截器的实现。

2.3.3 任务注册

// 添加请求拦截器 —— 处理请求配置对象 axios.interceptors.request.use(function (config) {   config.headers.token = 'added by interceptor';   return config; });  // 添加响应拦截器 —— 处理响应对象 axios.interceptors.response.use(function (data) {   data.data = data.data + ' - modified by interceptor';   return data; });

在 lib/axios.js 路径下,我们可以找到 「axios」  对象的定义。为了能直观地了解对象之间的关系,阿宝哥建议大家在读源码的过程中,多动手画画图。比如阿宝哥使用下图来总结一下 Axios 对象与  InterceptORManager 对象的内部结构与关系:

如何使用Axios

2.3.4 任务编排

现在我们已经知道如何注册拦截器任务,但仅仅注册任务是不够,我们还需要对已注册的任务进行编排,这样才能确保任务的执行顺序。

同样对于任务编排,也可以使用图的形式来展现任务编排后的结果。「这里有一个小技巧,就是可以采用对比的形式来展示任务编排后的结果,这样子会更加清楚任务编排的处理逻辑。」

如何使用Axios

2.3.5 任务调度

任务编排完成后,要发起 HTTP 请求,我们还需要按编排后的顺序执行任务调度。

如何使用Axios

需要注意的是:在阅读源码过程中,不要太在意细节。比如在研究 Axios 拦截器原理时,不需要再深入了解 「dispatchRequest」  背后的具体实现,只需知道该方法用于实现发送 HTTP 请求即可,这样才不会把整个线路拉得太长。

在分析完特定的功能点之后,也许你已经读懂的具体的源代码。但阿宝哥觉得这并不是最重要的,「更重要的是思考它的设计思想,这样设计有什么好处,对于我们有没有什么值得借鉴和学习的地方」。比如参考  Axios 拦截器的设计模型,我们就可以抽出以下通用的任务处理模型:

如何使用Axios

上面阿宝哥以 Axios 的拦截器为例,分享了读 Axios 源码的思路与技巧。接下来阿宝哥来分享一些读源码的建议和辅助工具

三、读源码的建议

如何使用Axios

四、读源码辅助工具

如果你对下列辅助工具感兴趣的话,可以通过以下图片来源的链接,来直接打开每个工具的在线地址。

如何使用Axios

(图片来源:https://www.processon.com/view/link/5f6d2beff346fb166d0ac4fd)

五、总结

其实除了上面的内容之外,读优秀开源项目还有挺多值得关注的地方。阿宝哥在学习 BetterScroll 项目源码时,总结了一张思维导图:

如何使用Axios

(图片来源:https://www.processon.com/view/link/5f6d2beff346fb166d0ac4fd)

下面阿宝哥用一张图来总结一下 axios 和 better-scroll 这两个开源项目的学习路线:

如何使用Axios

1、Axios 项目的切入点是从 GitHub 中的功能特性中筛选出来的;

2、BetterScroll 的切入点是从掘金上 “BetterScroll 2.0 发布:精益求精,与你同行”  这篇文章中介绍的功能亮点中找到的。

除此之外,阿宝哥也来简单总结一下本文介绍的读源码的思路与技巧:

  • 站在巨人的肩膀,提前阅读一些项目相关的优质文章;

  • 汇总学习或工作中遇到的问题,带着问题进行源码学习;

  • 明确阅读源码的主线或切入点;

  • 尽可能从简单的示例出发来分析每个功能点;

  • 先梳理清楚主要流程,不要太在意细节,避免把整个线路拉得太长;

  • 在阅读源码过程中,要多多画图,这样理解起来会更加直观。

“如何使用Axios”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何使用Axios

本文链接: https://lsjlt.com/news/84436.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用Axios
    本篇内容介绍了“如何使用Axios”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、灵魂四连问1.1 为什...
    99+
    2024-04-02
  • vue中axios如何使用
    这篇文章主要讲解了“vue中axios如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中axios如何使用”吧!1.axios配置 我的目录结构src/axios/in...
    99+
    2023-07-04
  • 如何使用Typescript封装axios
    本文小编为大家详细介绍“如何使用Typescript封装axios”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用Typescript封装axios”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。基础封装首...
    99+
    2023-07-02
  • axios中如何使用GET与POST
    这篇文章主要介绍axios中如何使用GET与POST,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!axiosaxios 是一个基于 Promise 的 HTTP 客户端,专门为浏览器...
    99+
    2024-04-02
  • vue项目中如何使用axios
    这篇文章主要介绍了vue项目中如何使用axios的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue项目中如何使用axios文章都会有所收获,下面我们一起来看看吧。Axios简介axios框架全称(ajax –...
    99+
    2023-07-04
  • vue中如何使用axios和封装
    这篇文章给大家分享的是有关vue中如何使用axios和封装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue官方推荐使用 axios发送请求首先上需求1.需要封装全局调用2.返...
    99+
    2024-04-02
  • 基于axios在vue中如何使用
    本文小编为大家详细介绍“基于axios在vue中如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于axios在vue中如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Axios是什么Axios...
    99+
    2023-06-29
  • vue3如何实现挂载并使用axios
    目录vue3挂载并使用axiosvue全局挂载axiosvue3挂载并使用axios 首先在main.js中引入axios并挂载到app.config.globalPropertie...
    99+
    2024-04-02
  • React中如何使用axios发送请求
    小编给大家分享一下React中如何使用axios发送请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!React中安装并引入axios依赖在React项目中使用a...
    99+
    2023-06-20
  • Vue如何使用axios添加请求头
    这篇“Vue如何使用axios添加请求头”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue如何使用axios添加请求头”文...
    99+
    2023-06-30
  • 如何在Vue项目中使用axios请求
    目录1、安装2、没有封装存在的问题3、创建文件4、请求地址配置5、axios 配置,设置请求头及响应码处理6、使用在实际的项目中,和后台的数据交互是少不了的,我通常使用的是 axio...
    99+
    2024-04-02
  • Vue3如何使用axios发起网络请求
    目录Vue3使用axios发起网络请求1.何为Axios?2.如何安装Axios3.如何封装网络请求和全局实例化axios4. api.js是什么?5.http.js是什么?6.re...
    99+
    2024-04-02
  • 如何在Vue中使用axios上传图片
    如何在Vue中使用axios上传图片?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在vue和axios的配合下实战一波<!--   &nbs...
    99+
    2023-06-15
  • 使用Axios Element如何实现全局请求loading
    这篇文章给大家分享的是有关使用Axios Element如何实现全局请求loading的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景业务需求是这样子的,每当发请求到后端时就触...
    99+
    2024-04-02
  • vue项目中如何使用axios上传图片
    这篇文章将为大家详细讲解有关vue项目中如何使用axios上传图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。axios 简介axios 是一个基于Promise 用于...
    99+
    2024-04-02
  • 如何在 Vue 中使用 Axios 异步请求API
    目录设置基本 HTTP 请求 Axios 配合 async/await Axios 的错误处理 发送POST请求 用 Axios 编写可复用的 API 调用 最终代码设置基本 HTT...
    99+
    2024-04-02
  • Vue前端如何对axios的封装和使用
    这篇文章将为大家详细讲解有关Vue前端如何对axios的封装和使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Axios 是一个基于 promise 的 HTTP 库。...
    99+
    2024-04-02
  • Vue如何二次封装axios为插件使用
    这篇文章给大家分享的是有关Vue如何二次封装axios为插件使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vuejs2.0 已经不再维护 vue-resource,vuejs...
    99+
    2024-04-02
  • React Native如何使用axios进行网络请求
    本篇内容主要讲解“React Native如何使用axios进行网络请求”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React Native如何使用axios进行网络请求”吧!在前端开发中,能...
    99+
    2023-06-20
  • 如何在vue项目中使用封装后的axios
    这篇文章给大家介绍如何在vue项目中使用封装后的axios,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为什么要使用VueVue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试...
    99+
    2023-06-06
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作