Skip to content

复用共享 HTTP 客户端

前提

完成安装,启动 HTTP 示例的服务。它通过 GET /users/1 返回 JSON { "id": 1, "name": "Ada" }。运行环境需要支持 Fetch;核心包不依赖 React 或平台服务。

创建并复用客户端

在应用的 api.ts 中导出供相同配置调用复用的客户端:

ts
import { Fetcher } from '@ahoo-wang/fetcher';

export const api = new Fetcher({
  baseURL: 'http://127.0.0.1:8787',
  headers: { Accept: 'application/json' },
  timeout: 5_000,
});

在服务模块导入 api,调用 await api.get('/users/1'),再对返回的 Response 执行 await response.json(),或显式选择 JSON 提取器。结果应包含 Ada。第二次调用复用配置,但会创建新 exchange 并再次发送 HTTP 请求。

上线前换成应用 API 地址。浏览器跨域请求需要服务端 CORS 配置;HTTPS 页面不能任意访问 HTTP API。不要向不可信地址发送认证头。

按所有者设置默认值

请求头覆盖同名客户端头;请求级超时覆盖客户端超时。稳定的应用配置放在客户端,每次调用特有的参数放在请求中。可变默认值不提供身份隔离:服务端应使用请求或会话范围的客户端,或显式设置每次请求的授权头,不要为每个进入的用户修改全局客户端 token。

共享客户端不是共享响应缓存。这里没有自动跨请求去重或通用重试。

失败与清理

在能够展示或报告错误的应用边界捕获拒绝。示例请求全部结束后,用 Ctrl+C 关闭本地夹具。这里没有客户端连接池销毁 API;停用客户端前由资源所有者取消活动请求。若功能在长生命周期客户端上注册了自定义拦截器,结束时移除自己拥有的注册。

继续阅读构造请求客户端参考状态归属

基于 Apache License 2.0 发布。