Axios之请求适配器

xiaoxiao2021-03-01  48

前言

上一篇文章分析了dispatchRequest模块以及拦截器模块的功能,知道实际上是调用请求适配器来发送请求的,而adapter是配置在defaults.js模块的。 本篇文章主要分析defaults.js模块中adapter以及其背后的实现。

具体分析

defaults.js模块是默认配置,配置如下:

adaptertransformRequesttransformResponsetimeoutmaxContentLengthheaders.common 等

本篇主要讲adapter,这是axios实际请求发送的核心,实际上defaults.js中关于其的配置如下:

function getDefaultAdapter() { var adapter; if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { adapter = require('./adapters/http'); } else if (typeof XMLHttpRequest !== 'undefined') { adapter = require('./adapters/xhr'); } return adapter; }

adapter: getDefaultAdapter()

实际上上面的逻辑处理分为两种情况: - Node.js环境下,引入http.js模块 - 浏览器环境下,引入xhr.js模块

Node.js下使用内置的http模块来实现请求发送 在浏览器环境下就使用XMLHttpRequest来实现请求发送

我们就看下xhr.js模块中相关处理。

xhr模块

上图中就是xhr.js模块中的处理,实际上就是创建XMLHttpRequest对象发送请求以及处理请求头的设置。

总结

至此,axios整个流程梳理完了,中间实际上有一些细节点没有去提及,例如XSRF的问题、相关工具集等,但这些不影响整体流程,只是流程中细节点。

axios整个流程如下:

转载请注明原文地址: https://www.6miu.com/read-3346495.html

最新回复(0)