内网也能调 Cloudflare API:cloudflare-typescript 代理配置与自定义 fetch 技巧清单

发布时间:2026/10/13 14:31:05
内网也能调 Cloudflare API:cloudflare-typescript 代理配置与自定义 fetch 技巧清单 内网也能调 Cloudflare APIcloudflare-typescript 代理配置与自定义 fetch 技巧清单【免费下载链接】cloudflare-typescriptThe official TypeScript library for the Cloudflare API项目地址: https://gitcode.com/gh_mirrors/cl/cloudflare-typescript项目简介Cloudflare 官方 TypeScript SDKcloudflare-typescript是 Cloudflare 官方出品的 TypeScript/JavaScript SDKnpm 包名cloudflare让你用类型安全的方式调用 Cloudflare REST API——从 Zones、DNS、Workers 到 AI、KV、R2 等上百个资源全部内置自动分页、重试、超时和完整的请求/响应类型定义。如果你的运行环境在内网、无法直连api.cloudflare.com或者想用自己的网络层代理、Mock、埋点这篇文章给你一份可落地的代理配置与自定义 fetch 技巧清单。一键安装# 直接安装 SDK npm install cloudflare # 如需查看/修改源码可克隆仓库 git clone https://gitcode.com/gh_mirrors/cl/cloudflare-typescript拿到客户端只需两行核心逻辑见src/client.tsimport Cloudflare from cloudflare; const client new Cloudflare({ apiToken: process.env[CLOUDFLARE_API_TOKEN], // 默认读取该环境变量可省略 });技巧 1用 baseURL 把请求指到你的代理网关客户端构造函数支持baseURL选项默认值是https://api.cloudflare.com/client/v4见 src/client.ts 中ClientOptions.baseURL的定义。把它改成公司网关或本地 Mock 地址即可让所有请求走内网const client new Cloudflare({ apiToken: process.env[CLOUDFLARE_API_TOKEN], baseURL: http://gateway.intranet.com/cf-proxy/client/v4, });也可以不改代码直接用环境变量CLOUDFLARE_BASE_URL覆盖多环境切换非常方便。技巧 2三种运行时的代理配置方法官方推荐的做法是通过fetchOptions注入运行时的代理选项README 中 “Configuring proxies” 一节。不同运行时写法不同运行时关键做法要点Node.js用 undici 的ProxyAgent通过fetchOptions.dispatcher传入最常用支持 HTTP/HTTPS 代理Bun直接传fetchOptions.proxy字符串一个字段搞定DenoDeno.createHttpClient({ proxy })后放入fetchOptions.client需先创建 HTTP 客户端Node 示例内网代理场景最常用import * as undici from undici; const proxyAgent new undici.ProxyAgent(http://proxy.intranet:8888); const client new Cloudflare({ apiToken: process.env[CLOUDFLARE_API_TOKEN], fetchOptions: { dispatcher: proxyAgent, }, }); 小技巧fetchOptions是全局默认值单次请求还可以传独立的fetchOptions覆盖它方便对个别慢接口单独加参数。技巧 3自定义 fetch 的三种姿势SDK 默认使用全局fetch见src/internal/shims.ts的getDefaultFetch。想完全接管网络层有三种方式整体替换全局 fetchglobalThis.fetch myFetch适合老项目统一改造。构造时注入推荐import myFetch from my-fetch; const client new Cloudflare({ apiToken: process.env[CLOUDFLARE_API_TOKEN], fetch: myFetch, // 自定义 fetch 函数 });派生新客户端用client.withOptions({ fetch: myFetch })在不动原客户端的情况下换网络层一个项目里可以并存“直连”和“走代理”两个客户端实例。自定义 fetch 里还能顺手做请求埋点、Mock 测试、日志留痕——官方测试就是用注入的fetch来断言发出的 URL 和请求体参考tests/index.test.ts中的custom fetch用例。技巧 4内网弱网下的超时与重试调优内网链路长、不稳定两个参数直接调timeout单请求超时默认 1 分钟超时抛APIConnectionTimeoutErrormaxRetries默认自动重试 2 次指数退避对 408、409、429、5xx 和网络断连都生效。const client new Cloudflare({ apiToken: process.env[CLOUDFLARE_API_TOKEN], timeout: 20 * 1000, // 20 秒 maxRetries: 5, // 内网多给几次机会 });重试逻辑含Retry-After头解析位于src/client.ts的retryRequest方法行为透明可控。技巧 5开 debug 日志排查代理是否生效内网排障最快的方式是把日志开到debug能看到每个请求的 URL、响应状态与耗时const client new Cloudflare({ logLevel: debug, // 或设环境变量 CLOUDFLARE_LOGdebug });日志格式与工具在src/internal/utils/log.ts还可传入 pino、winston 等第三方 logger 接管输出。环境变量速查清单环境变量作用CLOUDFLARE_API_TOKENAPI Token 认证推荐CLOUDFLARE_API_KEY/CLOUDFLARE_EMAIL旧版 Global Key 认证CLOUDFLARE_BASE_URL覆盖默认 API 地址指向代理网关CLOUDFLARE_LOG日志级别debug/info/warn/error/offCLOUDFLARE_CUSTOM_HEADERS按行注入自定义请求头如X-Proxy-Tag: internal总结想让所有请求走内网代理优先baseURL指向网关或按运行时用fetchOptions配代理Node 用 undiciProxyAgent想接管网络层埋点/Mock/测试构造时传fetch或用withOptions派生客户端弱网环境记得调大timeout和maxRetries并用logLevel: debug快速定位问题。掌握这份清单无论在公司内网还是边缘环境cloudflare-typescript 都能稳定连上 Cloudflare API。【免费下载链接】cloudflare-typescriptThe official TypeScript library for the Cloudflare API项目地址: https://gitcode.com/gh_mirrors/cl/cloudflare-typescript创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询