使用Typescript重构axios(一)——写在最前面
0.系列文章
1.使用Typescript重构axios(一)——写在最前面
2.使用Typescript重构axios(二)——项目起手,跑通流程
3.使用Typescript重构axios(三)——实现基础功能:处理get请求url参数
4.使用Typescript重构axios(四)——实现基础功能:处理post请求参数
5.使用Typescript重构axios(五)——实现基础功能:处理请求的header
6.使用Typescript重构axios(六)——实现基础功能:获取响应数据
7.使用Typescript重构axios(七)——实现基础功能:处理响应header
8.使用Typescript重构axios(八)——实现基础功能:处理响应data
9.使用Typescript重构axios(九)——异常处理:基础版
10.使用Typescript重构axios(十)——异常处理:增强版
11.使用Typescript重构axios(十一)——接口扩展
12.使用Typescript重构axios(十二)——增加参数
13.使用Typescript重构axios(十三)——让响应数据支持泛型
14.使用Typescript重构axios(十四)——实现拦截器
15.使用Typescript重构axios(十五)——默认配置
16.使用Typescript重构axios(十六)——请求和响应数据配置化
17.使用Typescript重构axios(十七)——增加axios.create
18.使用Typescript重构axios(十八)——请求取消功能:总体思路
19.使用Typescript重构axios(十九)——请求取消功能:实现第二种使用方式
20.使用Typescript重构axios(二十)——请求取消功能:实现第一种使用方式
21.使用Typescript重构axios(二十一)——请求取消功能:添加axios.isCancel接口
22.使用Typescript重构axios(二十二)——请求取消功能:收尾
23.使用Typescript重构axios(二十三)——添加withCredentials属性
24.使用Typescript重构axios(二十四)——防御XSRF攻击
25.使用Typescript重构axios(二十五)——文件上传下载进度监控
26.使用Typescript重构axios(二十六)——添加HTTP授权auth属性
27.使用Typescript重构axios(二十七)——添加请求状态码合法性校验
28.使用Typescript重构axios(二十八)——自定义序列化请求参数
29.使用Typescript重构axios(二十九)——添加baseURL
30.使用Typescript重构axios(三十)——添加axios.getUri方法
31.使用Typescript重构axios(三十一)——添加axios.all和axios.spread方法
32.使用Typescript重构axios(三十二)——写在最后面(总结)
1.前言
俗话说:检验学习成果最直接的方式就是造论子。本系列文章是博主在学习了TypeScript
之后,为了检验自己的学习成果,萌生出造一个轮子试试的想法。由于是第一次造轮子,所以想选择一个常用,易于理解,并且自己较熟悉的轮子。网上搜索一番,发现前后端交互神器axios
造的人挺多的,并且提供了很多重构思路,为了能够站在巨人的肩膀上,并且axios
也刚好符合上面提到的三个要求,那就是它啦,使用TypeScript
重构axios
。
2.需求分析
axios,基于Promise的HTTP客户端,用于浏览器和node.js
重构之前,我们需要简单地做一些需求分析,看一下我们这次重构需要支持哪些 Features
。官方支持的Features
如下:
- Make XMLHttpRequests from the browser(在浏览器端使用 XMLHttpRequest 对象通讯)
Make http requests from node.js(在 Node.js 端使用 http request 通讯)- Supports the Promise API(支持 Promise API)
- Intercept request and response(支持请求和响应的拦截器)
- Transform request and response data(支持请求数据和响应数据的转换)
- Cancel requests(支持请求的取消)
- Automatic transforms for JSON data(JSON 数据的自动转换)
- Client side support for protecting against XSRF(客户端防止 XSRF)
这次重构,我们只实现官方支持的8个Features
中的7个,其中axios
在node
中的应用不打算实现,因为这部分在日常使用中相对较少(其实是因为懒,逃~)。
3.了解axios
axios
本质上就是发送一个请求拿到响应结果中途可以去对配置参数、请求数据和响应数据处理同时也支持一些拦截器的调用,它的工作流程如下:
而我们后续的重构思路也是严格按照这样一个工作流程展开。
3.目录介绍
本项目分为客户端(examples
文件夹)和服务端(server
文件夹):客户端主要是用来检验重构功能的demo
,采用TypeScript
按照模块化进行编写;服务端是用来响应demo
中发出的请求,采用express
编写。
├─.gitignore
├─index.html
├─package.json
├─README.md
├─tsconfig.json // TypeScript 编译配置文件
├─tslint.json // TypeScript lint 文件
├─examples // 每个功能点的demo
├─server // 服务端源码
└─src // 源码目录
├─axios.ts
├─defaultes.ts
├─cancel
├─core
├─helpers
└─types
4.项目运行
# 克隆项目到本地
git clone https://github.com/wangjiachen199366/ts-axios.git
# 进入项目目录
cd ts-axios
# 安装依赖
npm install
# 同时打开客户端和服务端
npm run server | npm start
OK,介绍完了,现在就让我们开始使用TypeScript
重构axios
吧!!!
原文地址:https://www.cnblogs.com/wangjiachen666/p/11234163.html
- 一款轻量级Web漏洞教学演示系统(DSVW)
- 使用Burpsuite代理和pypcap抓包进行抢红包的尝试
- 基于WAVSEP的靶场搭建指南
- 【干货】大数据量下,58同城mysql实践!
- 如何预先处理电影评论数据以进行情感分析
- 如何在Python中从零开始实现随机森林
- 教程从头开始在Python中实现k最近邻居
- 建立安全的 AI
- Python NLTK 自然语言处理入门与例程
- 漏洞预警 | Apache Struts2 曝任意代码执行漏洞 (S2-045,CVE-2017-5638)
- 详解OSSIM-OSSEC WIN 4771案例
- JSShell:一个基于python的交互式Shell
- golang中操作excel
- 企业安全漏洞通告引擎
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- TF入门05-实验过程管理
- [LeetCode]709. To Lower Case
- ISO C forbids comparison between pointer and integer [-fpermissive]
- 【疑难杂症】解决-TensorFlow “FutureWarning: Conversion of the”
- [Deep-Learning-with-Python] 文本序列中的深度学习
- TN-SCUI2020挑战赛详细讲解
- QSignalMapper使用以及替换方法
- 对于组件的可重用性,大佬给出来6个级别的见解,一起过目一下!
- 多个线程为了同个资源打起架来了,该如何让他们安分?
- 实战|记录一次渗透测试项目
- SVN工具分析
- 客服MM被投诉说下单耗时很长,老板下令必须控制在1秒以内
- 介绍两个刷 SQL 题的网站
- Spring MVC 你必须关注点
- 微信小程序开发实战(12):滑杆组件(slider)和form组件