@142vip/axios
Http 请求工具,支持通用化的自定义拦截器、自定义参数、自定义配置。
安装
shell
# npm
npm install @142vip/axios
# pnpm
pnpm add @142vip/axios功能
createVipAxios/vipAxios创建带扩展方法的 Axios 实例AxiosFactory工厂与clearInterceptor/getConfig- 默认请求/响应拦截器与 VIP 响应解包(
HttpStatus.OK时返回data) createAxiosRetry挂载axios-retry;AxiosResponseTransform处理 blob / arraybuffer 中的 JSONHttpStatus、HttpMethod枚举- 再导出
axios、axios-retry的具名符号(AxiosHeaders、AxiosError、isAxiosError、IAxiosRetryConfig) - 爬虫场景随机
User-Agent/Accept-Language请求头
配置
通过 createVipAxios / createAxiosConfig 传入 Axios 配置;默认见 defaultAxiosConfig(含 timeout: 10000)。
使用
ts
import { createAxiosConfig, createVipAxios, HttpStatus, vipAxios } from '@142vip/axios'
// 默认实例
await vipAxios.get('https://httpbin.org/get')
// 自定义实例
const client = createVipAxios(createAxiosConfig({
baseURL: 'https://api.example.com',
timeout: 5000,
}))
const { data } = await client.get('/users')需要 VIP 解包拦截器时,自行挂载 defaultVipRequestInterceptor / defaultVipResponseInterceptor(见源码 interceptors.ts)。
axios 与 axios-retry 的具名导出从本包引入。请求头、错误判断不要再写 from 'axios':
ts
import type { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from '@142vip/axios'
import { AxiosError, AxiosHeaders, HttpStatus, isAxiosError } from '@142vip/axios'
const headers = AxiosHeaders.from({ Accept: 'application/json' })发请求用 vipAxios / createVipAxios。export * 不会带上这两个依赖的默认导出。
包本身是 "type": "module"。CommonJS 下游(例如 Nest 的 nodenext)因此仍能从 ESM 声明里拿到 isAxiosError、AxiosRequestConfig 等具名符号;若声明被当成 CJS,这些名字会消失。
升级
shell
# 依赖更新
pnpm upgrade @142vip/axios参考
证书
Copyright (c) 2019-present, @142vip 储凡
仅供学习参考,商业使用请保留作者版权信息,作者不保证也不承担任何软件的使用风险。