惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
美团技术团队
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
Jina AI
Jina AI
D
Docker
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog

InfoQ - 促进软件开发领域知识与创新的传播

Meta 收购 Manus 这事儿泡汤了 5.5万 Star 开源项目 Ghostty 被迫出走,GitHub 正在终结一代技术人的乌托邦 Slack 长时运行多智能体系统的上下文管理方案 从 T+1 到分钟级:金城银行基于 Apache Doris 构建高可靠、强一致的实时数据平台 谷歌云推出 Agents CLI,简化 AI 智能体开发全流程 Claude官方击穿高薪、高学历的安全防线!Anthropic点名10大高危职业,但有群人暂时稳了 亚马逊云科技终止 WorkMail 服务,并将 App Runner 转入维护模式 OPPO小布记忆:全模态碎片化内容的理解与智能整理实践|AICon上海 模力工场038周AI应用周榜:工具在消失,工作流在出现 Akamai CEO Tom Leighton:Agent 时代来临,云基础设施正从“中心化”转向“分布式边缘” 日均数百亿入库背后:从“人肉调度”到K8s弹性架构,度小满金融基于OceanBase重构入库架构实践 百度文库网盘发布GenFlow 4.0:月活用户超1亿,要把网盘变成全端AI工作台 Altman 投的 Agent 终端 Warp 开源了!斩获3.5万star 哪些客户需要拒, 敢让龙虾决定吗?_AI&大模型_InfoQ 中文站_InfoQ精选视频 从开发到生产:为什么越来越多的机器学习团队纷纷迁移到 Snowflake | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 探索多智能体工作流:LangGraph Snowflake Cortex AI | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 腾讯云分布式缓存数据库:AI Agent - 从提示词工程到 Harness 工程 | 腾讯云数据库 DBTalk_腾讯_凌敏_InfoQ精选视频 基于 Streamlit 为 CSV 数据构建分析智能体 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 AI 智能体:告别文档缺漏 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 构建 AI 驱动的数据管道:深度探讨 Snowflake Openflow 与非结构化数据 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 云端太贵、本地不够聪明,英特尔押注“端云混合AI”:智能体PC会替人完成工作 不到10%的存储投入,可能拖垮90%的GPU投资!IBM把AI Agent塞进存储系统,算清企业最容易忽略的一笔账 Snowpark 上手实战 | BUILD 2025_大数据_王玮_InfoQ精选视频 ClickHouse + Langfuse,构建 Agent 可观测基石 腾讯云分布式缓存数据库:Cluster Proxy 共享连接架构深度解析 | 腾讯云数据库 DBTalk_腾讯_凌敏_InfoQ精选视频 AI 写代码太烧钱了:Copilot、Claude 一起涨价,不如把程序员请回来? 英特尔发布至强600系列工作站处理器与锐炫Pro B70 GPU,全新AI工作站来了 腾讯云分布式缓存数据库:从 Redis 到 Valkey - 开源社区如何快速创新 | 腾讯云数据库 DBTalk_腾讯_凌敏_InfoQ精选视频 印奇这次要“从0重做”智驾模型!首谈阶跃和千里双公司布局:中国AI商业闭环要靠车跑出来 从Cursor返聘归来,90后华裔女高管带Claude开启日更模式:token成本比工程师工资低多了!
Ky 2.0 发布:重构 Hooks、改进超时机制,并内置 Schema 校验...
作者:Daniel Curtis马可薇 · 2026-06-27 · via InfoQ - 促进软件开发领域知识与创新的传播

由 Sindre Sorhus 开发、基于 Fetch API 的轻量级 JavaScript HTTP 客户端 Ky,近日发布了 2.0 版本。这是该项目多年来首次发布大版本更新,带来了重构后的 Hook 系统、更完善的超时控制、更清晰的 URL 处理方式,以及内置的响应数据校验能力。

Ky 2.0 最大的变化之一是对 Hooks API 的统一。此前,beforeRequestafterResponsebeforeRetrybeforeError 等 Hook 分别接收不同参数,而现在它们全部改为接收统一的状态对象: {request, options, retryCount, ...} 。这种设计让整个 Hook 体系变得更加一致,也为未来继续扩展接口留下了空间。与此同时,新版本新增了一个 init Hook,它会在所有其他 Hook 之前执行。此外,beforeError 现在不再只处理 HTTPError,而是会在所有错误类型发生时触发。

超时机制也是此次更新的重点。除了原本针对单次请求尝试的 timeout 超时控制外,Ky 2.0 新增了 totalTimeout 选项,用于限制整个请求生命周期的总耗时,包括重试和等待时间在内。一旦超过这个时间限制,就会抛出 TimeoutError。重试机制也进行了调整。Ky 引入了新的 NetworkError 类型,并将自动重试的范围限制在真正的网络故障上,例如 DNS 解析失败或连接被拒绝等情况,而不会再因为程序错误或其他非网络异常而触发重试。

长期以来容易让用户困惑的 URL 处理逻辑,在 2.0 中也进行了重新设计。原来的 prefixUrl 被更名为 prefix,并允许请求路径以斜杠开头;同时新增了 baseUrl 配置,用于按照标准 URL 解析规则拼接地址。两种用法的职责被明确区分,避免了此前一些容易踩坑的行为。

响应数据处理方面,Ky 2.0 为 .json() 方法加入了 Standard Schema 校验支持。开发者可以直接结合 Zod、Valibot 等兼容的验证库,对接口返回数据进行运行时校验,同时获得完整的 TypeScript 类型推导能力。另外,HTTPError 现在新增了已经解析好的 data 属性。过去如果想读取错误响应体,通常需要再次调用 error.response.json(),既麻烦又可能导致资源释放问题。现在错误数据会提前完成解析,开发者可以直接通过 error.data 获取。

Hacker News 上,维护者 Seth Holladay 这样总结此次更新:

这次加入了很多提升开发体验的改进。超时机制和 Hook 系统都进行了重构,自定义实例中的 Base URL 问题也终于解决了。我们修复了目前已知的所有问题。

当被问到 Ky 与 Axios 的区别时,他表示:

Ky 从一开始就是围绕 Fetch 设计的,而 Axios 是后来尝试适配 Fetch,这种适配并不总是理想。与此同时,Ky 的 TypeScript 支持也更完善,包括内置的 Schema 校验和类型推导能力。

Reddit 上不少开发者也对新版本给予了积极评价。一位用户表示:

这个项目挺酷的,可以理解成 fetch 升级版。这里面的大部分功能其实都是我自己封装 fetch 时会写的东西,但自己维护这些封装很麻烦,而且还得写一堆测试。

另一位从 Axios 转向 Ky 的开发者则表示自己“非常喜欢”这个库,还有人认为 2.0 中新增的这些改动都非常实用。

当然,大版本升级也意味着一些不兼容变更。Ky 2.0 现在要求 Node.js 22 及以上版本;所有 Hook 回调都必须迁移到新的状态对象形式;.json() 在遇到空响应或 204 响应时会抛出异常,而不再返回空字符串;searchParams 会与 URL 中已有的查询参数进行合并;错误响应体也需要从 error.data 中读取,而不是继续调用 error.response.json()。官方发布说明同时提供了完整的迁移指南,并给出了每项变更的前后对比示例。

Ky 是一个开源 HTTP 客户端项目,目前由 Sindre Sorhus、Seth Holladay 和 Szymon Marczak 共同维护。整个库仅有几 KB 大小,同时支持浏览器、Node.js、Bun 和 Deno 环境。它将自己定位为一个更加轻量、更加贴近 Fetch 原生设计的 Axios 替代方案。

查看英文原文:Ky 2.0 Fetch API Wrapper with Revamped Hooks, Smarter Timeouts, and Built-In Schema Validation - InfoQ