Skyroc Admin Docs
@core 基础设施

@skyroc/axios

类型安全的 Axios 封装,支持重试、transform 流水线、abort 控制

概览

包名@skyroc/axios
版本2.0.1
依赖@skyroc/utils、axios、axios-retry、qs
测试✅ 5 个测试文件(含 MSW)

@skyroc/axios 是底层 HTTP 客户端工厂。它本身不依赖任何 UI / 认证实现——上层 @skyroc/service 在它之上注入适配器,应用再用 service。

两种请求风格

import { createRequest, createFlatRequest } from '@skyroc/axios';
工厂返回风格适用
createRequest直接返回数据,失败抛异常try/catch 风格
createFlatRequest返回 { data, error, response }不想 try/catch,类 Go 风格
// flat 风格
const request = createFlatRequest(axiosConfig, options);
const { data, error } = await request({ url: '/users' });
if (error) { /* 处理 */ }

请求选项(RequestOption)

工厂第二个参数是一组钩子,构成响应处理流水线:

钩子作用
onRequest请求发出前修改 config(如加 token)
isBackendSuccess判断后端响应是否业务成功
onBackendFail业务失败时处理(如刷新 token)
transform把后端响应转成业务数据
onError统一错误处理

内建能力

  • 请求 ID:每个请求注入 X-Request-Id(常量 REQUEST_ID_KEY),便于追踪;
  • 重试:集成 axios-retry(默认 0 次,可配);
  • Abort 控制:内部维护 AbortController 映射,可取消请求;
  • 响应 transform:自动把 blob / arrayBuffer 响应转 JSON(shared.ts);
  • HTTP 成功判定isHttpSuccess 判断 2xx。

常量

常量含义
BACKEND_ERROR_CODE'BACKEND_ERROR'后端业务错误标识
REQUEST_ID_KEY'X-Request-Id'请求 ID header

与 TanStack Query 配合

推荐 axios 只负责「发请求 + 拦截」,缓存与生命周期交给 React Query。这正是 @skyroc/service 做的事——它把 createRequestcreateQueryClient 组合起来,并通过适配器接入 UI。

类型

RequestInstanceFlatRequestInstanceRequestOptionCustomAxiosRequestConfigFlatResponseData 等,以及重导出的 AxiosErrorCreateAxiosDefaults

On this page