up-fetch 用于构建可复用的 fetch 客户端,核心是请求级默认值与自动请求/响应处理。
用途:当多个接口需要共享 baseUrl、鉴权、超时、重试等配置时,可用它统一封装,避免每次手写。
主要能力:通过 up(fetchFn, getDefaultOptions?) 创建客户端,getDefaultOptions 每次请求都会执行,因此鉴权等可变默认值保持最新;upfetch(input, options?, ctx?) 执行单次请求。支持 params、body 自动序列化,schema 运行时校验(如 Zod),reject 控制错误作为值返回,并可配置重试、超时与生命周期钩子。
基本用法:使用 import { up } from 'up-fetch' 创建客户端,第二个参数传函数而非普通对象;在函数内读取 token 等可变值。示例中 baseUrl、headers 的 Authorization、timeout 均在此设置。请求时传入 schema 即可获得类型安全与运行时校验。
适用场景:需要统一 API 客户端、鉴权刷新、请求/响应塑形、数据校验与失败重试的项目。
限制与注意:必须传函数作为 up() 的第二参数;仅靠 TypeScript 泛型不能校验载荷,需用 schema;若要错误即值行为,需先设置 reject: () => false;建议使用 globalThis.fetch 而非导入的 undici.fetch。流式与运行时注意事项见对应参考文件,具体文件内容暂未提供。