axios源码阅读之文件目录篇

入口文件之axios.js

axios的入口文件。主要功能:

  1. createInstance创建axios实例。
  2. axios.create方法允许用户创建多个axios实例同时允许继承。
  3. axios.Cancel、axios.CancelToken、axios.isCancel用于控制取消网络请求
  4. axios.all 用于发送多个网络请求,实际使用了Promise.all
  5. axios.spread 将多个参数合并成数组执行,可使用延展语法代替,配合axios.all使用

axios默认配置文件defaults.js

此文件中主要需注意getDefaultAdapter方法,该方法主要是设置axios的网络请求模块,在浏览器环境下使用XMLHttpRequest模块,node模式下使用http模块。

实用工具集utils.js

主要封装了一些常用的工具函数。

adapters目录下http.js

node模式下使用http网络请求模块。使用Promise进行了一层封装。主要功能:

  1. 设置User-Agent(可选)
  2. 处理请求数据
  3. HTTP基本身份验证(可选)
  4. 解析url并处理成绝对路径
  5. 设置代理(可选)
  6. 创建请求对象
  7. 监听请求错误
  8. 处理请求超时(可选)
  9. 监听请求取消(可选)

adapters目录下xhr.js

浏览器模式下使用XMLHttpRequest。同样的也使用了Promise进行封装。主要功能:

  1. HTTP基本身份验证
  2. 解析url并处理成绝对路径
  3. 监听网络请求是否就绪
  4. 处理浏览器请求取消的情况(与手动取消相反)
  5. 处理底层网络错误
  6. 添加xsrf标头
  7. 添加请求头
  8. 添加withCredentials进行请求(如果需要)
  9. 设置响应类型(可选)
  10. 监听文件下载进度(可选,下载可用)
  11. 监听文件上传进度(可选,文件上传可用)
  12. 监听请求取消(可选)

cancel目录下Cancel.js

一个Cancel类,用于取消请求时使用,包含message字段。主要功能:

  1. 重写了toString方法
  2. 函数原型上添加了__CANCEL__属性,默认为true

cancel目录下CancelToken.js

一个CancelToken类,用于取消请求时使用。主要功能:

  1. 包装一个执行器生成token
  2. 包含throwIfRequested方法,用于处理请求取消的情况。

cancel目录下isCancel.js

判断请求是否取消。

core目录下Axios.js

声明一个Axios类,同时通过构造方法设置axios配置和初始化请求拦截器和响应拦截器。
包含request、getUri、get、delete、head、options、post、put和patch方法。

core目录下buildFullPath.js

将相对路径组合成绝对路径。

core目录下createError.js

使用指定的消息,配置,错误代码,请求和响应创建错误信息。

core目录下dispatchRequest.js

使用配置的适配器,即网络请求模块进行网络请求。在进行网络请求之前,先判断是否已经取消了网路请求,如果没有,就进行转换请求数据,合并请求头等操作;然后再进行网络请求;最后转换响应数据。

core目录下enhanceError.js

使用指定的消息,配置,错误代码,请求和响应格式化错误信息。

core目录下InterceptorManager.js

拦截器管理类,包含三个方法:分别是use方法——添加拦截器,eject方法——移除拦截器,forEach方法——遍历并调用拦截器。

core目录下mergeConfig.js

用于axios配置文件合并。

core目录下settle.js

根据响应结果执行Promise.resolve或者Promise.reject。

core目录下transformData.js

转换请求或响应数据。

helpers目录下bind.js

实现函数绑定执行上下文,即this对象。

helpers目录下buildURL.js

序列化参数,并拼接到URL。

helpers目录下combineURLs.js

通过baseURL和相对URL组合形成一个新的URL。

helpers目录下cookies.js

cookies模块,只有在浏览器环境存在,实现read、write、remove三个函数;其他环境不需要,实现read、write、remove三个空函数,防止调用报错。

helpers目录下isAbsoluteURL.js

判断是否为绝对路径。

helpers目录下isURLSameOrigin.js

判断URL是否同源,非标准浏览器环境 (web workers, react-native) 不支持支持,直接返回true。

helpers目录下normalizeHeaderName.js

标准化请求头,删除不需要的请求头字段。

helpers目录下parseHeaders.js

转化成一个标准的请求头对象。

helpers目录下spread.js

将多个参数转化为一个数组执行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值