Skip to content

TypeScript + Vite + Vitest + Vitepress 实现的玩具版高仿 axios

Notifications You must be signed in to change notification settings

EricWXY/toy-axios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1890d12 · Sep 20, 2023

History

12 Commits
Sep 19, 2023
Sep 19, 2023
Sep 19, 2023
Sep 20, 2023
Sep 19, 2023
Sep 19, 2023
Sep 19, 2023
Sep 20, 2023
Sep 19, 2023
Sep 20, 2023
Sep 20, 2023
Sep 19, 2023
Sep 20, 2023
Sep 19, 2023
Sep 19, 2023
Sep 19, 2023

Repository files navigation

toy-axios

TypeScript + Vite + Vitest + Vitepress 实现的玩具版高仿 axios

简介

该项目是一个使用 TypeScript 开发的高仿 axios 库,旨在提供一个简单、易用且功能丰富的 HTTP 客户端工具。它基于现有的流行库 axios 进行模仿,并添加了一些额外的功能和改进。

使用 Vite 作为构建工具,使得该库具备快速的开发和构建能力。Vite 的高效开发服务器和即时热重载功能,可帮助开发者快速迭代、调试和测试代码。

为了确保库的质量和可靠性,我们采用了 Vitepress 作为文档工具,并使用 Vitest 作为测试框架。Vitepress 提供了一个简单易用的文档编写和托管环境,使得用户可以方便地查阅和理解库的使用方法、API 文档和示例代码。Vitest 则为我们提供了强大的测试框架,用于编写和运行单元测试、集成测试和端对端测试,以确保库在各种场景下的稳定性和正确性。

该高仿 axios 项目不仅保留了 axios 的核心功能,如拦截器、并发请求、请求取消等,还扩展了一些新的功能和改进。例如,我们可能添加了对其他协议的支持、更灵活的请求配置选项、自定义中间件等功能,以满足更广泛的需求和应用场景。

无论是构建现代 Web 应用,还是开发跨平台的移动应用或服务端应用,该高仿 axios 项目都可以为开发者提供便捷的 HTTP 请求处理能力,帮助他们轻松地与后端服务进行通信,并处理请求和响应的各种需求。

我们欢迎开发者使用、贡献和反馈该项目,希望它能成为你构建优秀应用的可靠伙伴。详细的安装和使用说明,请参阅文档。

请注意,本项目是基于开源库 axios 的高仿实现,旨在提供类似的 API 和功能,并非与 axios 官方项目直接相关。

功能特点

1.基本功能

  • 提供了与原始 axios 相似的基本功能,例如执行各种类型的 HTTP 请求(GET、POST 等)、设置请求头、处理响应等。
  • 与原始 axios 类似的 API 设计和用法具有极高相似性,以帮助用户快速上手。
  • 目录结构以及核心机制高度还原 axios ,是学习 axios 源码和熟悉 typescript 开发不错的项目。

2.请求和拦截器

  • 支持请求和响应拦截器的功能,这使得用户可以在发送请求和处理响应之前进行自定义操作,如修改请求配置、处理错误、添加认证等。
  • 实现机制借鉴 axios 源码,利用 Promise 链,想要学习 axios 拦截器实现的童鞋可以先看看我这里的精简版本。

3.请求并发

  • 支持同时发送多个请求的能力,以提高性能和效率。
  • 一比一还原 axios.allaxios.spread API。

4.请求取消

  • 支持请求取消的功能,这对于用户在请求发送后需要中止请求非常有用。
  • 机制高度还原 axios,同样是学习 axios 取消请求机制的不错参考。

5.自定义配置选项

  • 提供自定义配置选项,用户可以根据需要设置不同的请求配置,如超时时间、请求重试、请求头设置等。
  • 可利用 axios.create 来创建符合特定需求的 axios 实例。

6.其他功能

  • 自定义适配器的配置,并默认支持 'fetch' 版本实现

安装

$ npm install toy-axios

or

$ yarn add toy-axios

快速开始

本库还原了 axios 的大部分核心 api,因此在 npm 安装之后便可以直接按照 axios 的使用方式开始体验

import axios from 'toy-axios';

// 发起一个 GET 请求
axios.get('/api/data').then((response) => {
  console.log(response.data);
}).catch((error) => {
  console.error(error);
});

联系方式

我的邮箱是 [email protected] 可以多多交流哦。

About

TypeScript + Vite + Vitest + Vitepress 实现的玩具版高仿 axios

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published