要求
保持不变:Node.js 20 或更新版本,或浏览器;ESM 和 CommonJS。破坏性变更摘要
不再重试 429
RATE_LIMITED 既涵盖按路由计算的时间窗口,也涵盖可能持续约 30 分钟的账户或 IP 封锁,因此 SDK 不再重试它。这包括简单上传的限制和 TOO_MANY_CONCURRENT_UPLOADS。请自行处理,并在再次尝试之前等待:
TOO_MANY_CONCURRENT_CHUNKS:服务器在读取该分片之前就拒绝了它,因此 SDK 会在 maxRetries 范围内再次发送。
写操作只有一次尝试
网络错误和5xx 现在只在 GET 调用和分片上传的分片上重试。以下调用只有一次尝试:
- 简单
put(),以及分片上传的启动、完成和中止; update()、copy()、move()、delete();rules.set()、uploadTokens.create()、shares.create()、shares.revoke()。
overwrite: true 的 put()。参见自行重试写操作。
更少的重试,更短的退避
maxRetries 现在默认为 2(以前为 5),退避上限为 8 秒(以前为 30 秒)。如需在读操作和分片上传的分片上保留旧的重试预算:
429 或写操作的重试。
SavedRule.active_from 变为可选
API 只会为带有 delete_after_days 的规则发送 active_from。在 TypeScript 中,请处理 undefined:
只有一个 ID 的 delete([id])
只有一个 ID 的批量操作现在与其他批量操作一样,会在 failed 中报告 PREFIX_NOT_ALLOWED,而不是抛出异常:
delete(id) 仍会抛出异常。
RATE_LIMIT 已弃用
服务不再发送 RATE_LIMIT:账户或 IP 封锁为 RATE_LIMITED。旧代码仍保留在 BlobErrorCode 中,以便现有的比较仍能编译;请将它们改为 RATE_LIMITED。新增了 DUPLICATE_RULE_PREFIX。
修复
- 在读取中途被截断的响应体现在属于网络错误:它会在
GET调用和分片上传的分片上重试,其他情况下则抛出原始的fetch错误(以前是UNKNOWN_ERROR)。 - 失败的分片上传现在会在中止之前等待仍在进行中的分片,因此中止之后不会再有分片到达,也不会有请求比
put()存活得更久。
检查清单
1
自行处理 429
捕获
RATE_LIMITED 并进行退避;SDK 不再重试它。2
检查写操作
只为可以安全重复的写操作添加你自己的重试。
3
选择重试预算
如果你依赖读操作和分片上传分片上的旧尝试次数,请传入
{ maxRetries: 5 }。4
更新类型
处理
active_from 为 undefined 的情况,并将 RATE_LIMIT 替换为 RATE_LIMITED。
