跳转到内容

错误和重试

Worker JSON API 使用以下 envelope 表示失败:

{
"error": {
"code": "entity_not_found",
"message": "Catalog entity not found",
"requestId": "request-id-when-available"
}
}

通用 release/catalog Worker 错误路径会返回 requestId。账户、社区和上传 handler 可能返回同样的 { error: { code, message } } 结构而没有该字段。请始终先根据 HTTP status 分支,并将未知字段视为可选。

StatusMeaningClient action
400查询、游标、路由或 JSON 格式错误修正请求;不要原样重试。
401需要会话登录,然后携带凭据重试。
403同源、验证、账户或权限检查失败修正浏览器/请求上下文,或向用户显示所需步骤。
404server、release、resource、entity、view、relation 或 media 不存在从当前视图移除项目,或刷新 registry。
409版本、幂等性或状态冲突重新读取 resource,并对新版本应用操作。
413 / 415body 或 media type 超出合约缩小或转换请求。
422body 字段或语义验证失败修正被指出的字段。
429达到速率限制或配额在存在时遵守 Retry-After,并使用退避。
500意外的 Worker 失败操作安全时使用退避重试。
502upstream、release object 或 provider projection 失败使用退避重试;保留 request ID。
503database、release、身份验证、storage 或 provider 不可用操作安全时使用退避重试。

对于幂等的公开 GET,408、429 和 5xx 适合使用指数退避。对于变更操作,只有在接口定义了幂等性或操作明确安全可重复时才重试。上传 intent 需要 Idempotency-Key;使用不同文件 metadata 重用同一键会返回 409 idempotency_conflict。

路由页面列出了对调用方有用的验证代码。错误代码是稳定标识符,message 用于显示和诊断。未知错误代码必须作为不透明失败处理。