你是不是也遇到过这样的情况:写个小程序调第三方天气API,返回一个 403 Forbidden,一脸懵;或者网页登录时突然弹出 429 Too Many Requests,刷新三次全卡住。别急着重装SDK——这些数字不是系统抽风,而是API在用“黑话”跟你对话。
错误码不是乱编的,是HTTP定的规矩
绝大多数Web API基于HTTP协议,错误码就是HTTP状态码。它由三位数字组成,第一位代表大类:
• 4xx 表示“你那边出问题了”(客户端错误)
• 5xx 表示“我这边崩了”(服务器错误)
• 2xx 是成功(比如200 OK),3xx 是跳转(比如302 Found),咱们今天专盯报错的那俩。
高频错误码速查表(附真实场景)
400 Bad Request
请求格式不对。比如你往用户注册接口传了个空邮箱,或JSON少了个逗号:
{"name": "张三", "email": ""}后端校验失败,直接甩回400。401 Unauthorized
没带身份凭证,或token过期了。就像去公司刷门禁卡,卡丢了或没续费,闸机不抬杆。常见于调微信开放平台接口时忘记加 Authorization: Bearer xxx 头。
403 Forbidden
你有证,但没权限。比如普通用户试图访问管理员后台接口,服务器认出你是谁,但摇头:“这屋不给你进。”
404 Not Found
地址错了。不是服务器挂了,是你请求的URL压根不存在——可能是拼错了路径,比如把 /api/v1/users 写成 /api/v1/user(少个s),也可能对方已下线该接口。
429 Too Many Requests
你刷太猛了。免费版高德地图API每秒最多调10次,第11次就返429。不少App在做批量导出时卡在这儿,得加个 sleep(1) 控制节奏。
500 Internal Server Error
服务器自己翻车了。可能是数据库连不上、PHP脚本报了未捕获异常,或者Python里写了 1/0。这时候别瞎改请求,等对方修复更实际。
502 Bad Gateway / 504 Gateway Timeout
常出现在用了Nginx或CDN的场景。比如你调的是某电商平台API,它背后还连着库存服务和支付服务,其中一环超时或崩了,网关就扔个502出来——问题不在你,也不在主站,而在它的某个下游模块。
怎么快速定位?三步走
1. 看响应头里的 Status 字段(浏览器开发者工具Network页签里点请求就能看到);
2. 检查响应体是否带了 error 或 message 字段(很多API会在400/401里附带中文提示);
3. 对照文档。比如Stripe的API明确写清了每个错误码对应的具体原因,比干猜强十倍。
下次再看到红字报错,先别急着重启IDE——花10秒扫一眼状态码,往往比翻三天日志更快找到病根。