Axios之请求适配器

前言

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

具体分析

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

  • adapter
  • transformRequest
  • transformResponse
  • timeout
  • maxContentLength
  • headers.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整个流程如下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/s1879046/article/details/81096720