ProfileClaw

API Errors

理解完整失败流程,而不只是记住一个错误名字

这一页解释的是运行时错误处理:响应 envelope、重要 headers、重试姿态,以及它和更窄的 Error Types 分类页之间的区别。

Format: AI-first docs
Source: DocsApiErrorsPage
信息

`/docs/api/errors` 是运行手册;`/docs/api/error-types` 是分类参考。

当你在实现 runtime 行为或排查真实故障时看这页;当你想理解稳定命名体系时看 Error Types。

这页覆盖什么

API Errors 关注的是一次失败请求在生产环境里应该怎样被完整处理。

Envelope 处理

读取归一化 JSON body,并判断到底发生了哪种失败。

  • 先看 `type`,再看 `error`,最后看可选 details。
  • 把原始 envelope 保留给日志和支持工具。
  • 把 body 当成 runtime 输入,而不只是 UI 文案。

Header 语义

限流和版本 headers 会直接影响 runtime 的下一步动作。

  • 通过 `Retry-After` 做退避感知重试。
  • 记录 `X-RateLimit-*` 做节流与观测。
  • 在调试和支持流程里使用 `X-API-Version`。

调试流程

从失败采集进入分类,再进入安全的下一步动作。

  • 把接入失败和请求结构失败分开。
  • 把重试逻辑留在 runtime adapter 内部。
  • 对未知故障保留足够元信息,方便后续追查。

把 envelope 和 headers 一起读

好的 runtime 不会只看 JSON body。状态码、限流 headers 和重试元信息,通常和 typed error 字段一样重要。

  • 结合 status 和 `type` 一起完成分支判断。
  • 使用 `Retry-After` 与 rate-limit headers 决定节奏。
  • 记录请求身份和 headers,但不要泄露 secrets。

把运行时处理和分类设计分开

Error Types 解释失败如何命名;API Errors 解释线上系统在失败真的发生时该怎么响应。

  • 这一页用于设计 runtime 行为和故障响应。
  • Error Types 用于在代码和 SDK 里建立稳定分支键。
  • 在内部文档里同时链接两页,避免构建者混用。

Errors 与 Error Types 的分工

这两个文档应该服务不同任务,而不是彼此重复。

表面主要回答的问题适用时机
API Errors当前这次失败请求,runtime 现在应该怎么处理?实现、调试、重试、运维手册阶段。
Error Types契约用什么稳定类别和名字来命名失败?设计 typed branching、SDK 和契约测试时。
OpenAPI x-error-codes这个具体操作可能出现哪些错误码?生成客户端、测试夹具和端点级预期时。

决策矩阵

当线上请求失败时,可以按下面的流程决定下一步动作。

情况

响应里带有 `Retry-After` 或 rate-limit headers

动作

在 runtime 里退避,并安排一次有边界的重试。

原因

服务端已经明确告诉你什么时候再尝试更安全。

情况

请求以 validation 或 missing-field 类型失败

动作

先停止并修正 payload 或路由选择。

原因

传输层重试无法修复一个结构错误的请求。

情况

runtime 遇到未知失败模式

动作

保留原始 envelope、headers、request id,并升级排查。

原因

未知失败应沉淀成可观测的契约或实现问题,而不是静默循环。

代表性失败 payload

这些示例说明 runtime 在失败时到底该检查什么。

限流感知失败
1{
2 "error": "Rate limit exceeded",
3 "type": "rate_limit.exceeded"
4}
校验失败
1{
2 "error": "Missing required field: targetRole",
3 "type": "career_prediction.missing_target_role"
4}

下一步

理解运行时处理之后,再继续看稳定分类和端点级错误码。