Skip to content

Axios 请求 ​

ts
import { AxiosHttpClient } from '@axewo/fin-core/http/axios'

const api = new AxiosHttpClient({ baseURL: '/api/', timeout: 10000 })
const orders = await api.get<{ id: string }[]>('orders', { params: { page: 1 } })
const response = await api.requestRaw<{ id: string }[]>({ method: 'get', url: 'orders' })
// response 保留 data、status、headers、config 等原生字段。

Axios 是包的运行依赖,无需为了此客户端再安装一份。配置使用原生 Axios 契约:timeout、params、data、signal、responseType、withCredentials 等。

方法 ​

方法返回值
get(url, config?)、delete(url, config?)响应体 T
post(url, data?, config?)、put、patch响应体 T
request<T, D>(config)响应体 T,D 为请求体类型
requestRaw<T, D>(config)完整 AxiosResponse
instance独立的原生 Axios 实例
interceptors原生请求和响应拦截器管理器

响应体如为 { code, data },普通方法返回整个对象,不再次取 data、不判断 code。失败时保留 Axios 原始错误,可使用 Axios 的 isAxiosError、isCancel 判断;它不是 Fetch 的 HttpError。

拦截器 ​

ts
const requestId = api.interceptors.request.use(config => {
  config.headers.set('X-Client', 'order-app')
  return config
})
const responseId = api.interceptors.response.use(response => {
  // 必须返回完整 AxiosResponse,以保持客户端方法的返回类型和解包规则。
  return response
})

// 应用卸载或不再需要时释放。
api.interceptors.request.eject(requestId)
api.interceptors.response.eject(responseId)

客户端不缓存 Token、不弹窗、不跳转、不自动重试。需要动态凭据注入时优先组合认证请求工厂,由应用明确提供可信 API 和凭据来源。