TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 434 subscribers
Post #662 1
开发者因不满 GitHub 上的 public-apis 列表更新滞后(大量接口已死或偷偷转付费),用 Astro + Cloudflare Workers + D1 + Pages 搭建了 FreeAPI.watch。每小时轮询 77 个免费公共 API 的可用性和响应时间,每日自动重建静态站点。

核心架构与踩坑要点:
- 三层分离:Pinger Worker(每小时 cron 检查并写入 D1)→ Builder Worker(每日 cron 汇总数据并暴露 JSON 快照)→ Astro 静态站(构建时拉取快照,生成 142 页纯 HTML)。
- Bug 一:fetch 的 this 绑定丢失。将 fetch 作为依赖注入函数存储时,在 Cloudflare Workers 的 V8 隔离环境下会因品牌检查失败导致立即抛出 TypeError,response_ms 始终为 0。修复:fetch.bind(globalThis)。
- Bug 二:50 子请求硬上限。免费版 Workers 单次调用最多发起 50 个 fetch 子请求,77 个 API 直接溢出。当前仅能成功检查前 50 个,后续 21 个静默失败。计划拆分 cron 为两个时段(0 分和 5 分,各 40 个)或升级付费版($5/月)解决。
- Bug 三:Pages 部署钩子不适用于直接上传。项目通过 wrangler pages deploy dist/ 部署(无 git 关联),无法使用 Pages 部署钩子。改用 GitHub Actions 每日 02:15 UTC 触发构建并重新部署,需手动设置 CLOUDFLARE_ACCOUNT_ID 避免权限查找。

所有服务均在免费层内运行(Workers 请求 1,700/天、D1 存储 80KB、Actions 90 分钟/月),唯一瓶颈是单次调用子请求数。

🔗 项目地址:原文链接

#开发者 #工具

📢 频道:@DevToolboxHub
FreeAPI.watch FreeAPI.watch — Live Status of Free Public APIs Live status of free public APIs, updated every hour. Find reliable, no-credit-card APIs for weather, news, finance, geocoding, and cryptocurrency.
More from @devtoolboxhub
  1. Oct 9, 2026一键式 LLM 限流逃逸 CLI 该工具是一个无状态的命令行脚本,专门用于在多家 LLM 提供商之间快速切换,避免因单一服务限流导致的整体延迟。 它读取 JSON 配置,按优先级顺…
  2. Oct 9, 2026Edge‑Agentic Commit Analyzer:零依赖本地守护 Edge‑Agentic Commit Analyzer 是一个纯 Python 脚本,专为 Git 提交…
  3. Oct 9, 2026不可给 AI 代理 root 权限,改为可审计的系统状态变更 在云原生环境中,直接赋予 AI 代理 root 访问权限会导致不可预测的系统漂移。 可行方案是让代理在可控的、不可变的…
  4. Oct 8, 2026BackstageCon 2026:一日全程聚焦 AI 与平台实践 BackstageCon 将于 2026 年 11 月 9 日在盐湖城举行,作为 KubeCon + Cloud…
  5. Oct 8, 2026Gemini CLI 安全连接服务器:使用 Termalin 的 MCP 方案 Gemini CLI 通过 MCP 协议与 Termalin 的内置 MCP 服务器通信,完成服务器…
  6. Oct 8, 2026OpenAI Codex Desktop:AI 原生开发界面 Codex Desktop 以“agent‑native”界面取代传统 IDE 或聊天机器人。它把 Git 操作、终端…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →