DOCAI · 课程 · L1 · 20 分钟
读懂一次 API 报错
拿到报错先看状态码、再看响应体的 type 与 message:三步把「一句话」定位到具体环节,而不是靠猜。
你将学会
- 能从状态码判断问题属于哪一类
- 能从响应体里找到真正有用的字段
- 能区分「改请求」「等一等」「找服务商」三种处置
先看状态码
| 状态码 | 大意 | 先检查 |
|---|---|---|
| 400 | 请求本身有问题 | 字段名、类型、模型名 |
| 401 | 没通过鉴权 | key 是否有效、请求头格式 |
| 403 | 通过了,但没权限 | 该 key 是否开通此模型/地区 |
| 404 | 找不到 | 路径、base URL、模型名 |
| 429 | 太快了 | 退避重试,见什么是限流 |
| 5xx | 服务端问题 | 等待或联系服务商 |
状态码只给类别,不给原因。下一步必须看响应体。
再看响应体
多数服务的错误结构类似:
{
"error": {
"type": "invalid_request_error",
"code": "model_not_found",
"message": "The model `xxx` does not exist"
}
}
三个字段里,message 最具体,code 最适合拿去搜。把 message 原文粘进答案库搜索,通常比读文档快。
最后决定怎么办
- 改请求:400、404(路径或模型写错)、401(key 放错位置)。
- 等一等:429、5xx。指数退避,别立即重试。
- 找人:403(权限未开通)、持续 5xx、余额问题。
一个常见误判
只看到 401 就去换 key。实际上 key 可能没问题,是请求头少了 Bearer 前缀,或者把 key 放进了 URL 参数。先核对格式,再换 key——不然新 key 一样失败。
自测
- 400 和 422 都表示请求有问题,为什么先看
message比先查文档快? - 429 时立即重试会怎样?
- 为什么「换个新 key」经常解决不了 401?