接口报错先看状态码:200、301、302、404、500 怎么排查
把常见 HTTP 状态码放回真实接口调试场景里讲清楚:什么时候看请求地址,什么时候看响应头,什么时候该找后端、网关或部署配置。
相关工具
状态码不是结论,是排查入口
很多人调接口时看到 200 就放心,看到 500 就觉得一定是后端坏了,其实状态码只能说明这次 HTTP 请求走到了哪一步。真正要定位问题,还要一起看请求方法、URL、参数、Header、响应体和重定向记录。比如 200 可能返回的是业务失败,404 可能是路径写错,也可能是网关没有转发到服务;500 可能是服务内部异常,也可能是上游数据库、缓存、第三方接口超时。
比较稳的排查顺序是:先确认 URL 和方法,再确认请求头和请求体,然后看状态码,最后看响应体。如果服务返回 JSON,就把响应复制到 JSON 工具里格式化;如果返回 HTML,要先判断是不是登录页、错误页或网关页面。不要只截一个状态码给别人看,最好把请求时间、请求方法、完整路径、状态码、响应头里的 content-type 和关键响应体一起记录下来。
200 不等于成功
HTTP 200 只代表请求在协议层面成功返回了响应,不代表业务成功。很多接口会固定返回 200,然后在 JSON 里用 code、success、message 之类字段表示业务结果。比如登录失败、余额不足、参数校验不通过,都可能是 200。判断业务成功,要看接口文档约定,而不是只看浏览器或调试工具显示的绿色状态。
一个简单的响应判断可以这样写:
{
"code": 1001,
"message": "token 已过期",
"data": null
}看到这种结果,重点就不是 HTTP 状态码,而是 token、权限、签名、时间戳这些业务条件。此时可以把请求头放进 Header 解析工具里确认 Authorization、Content-Type 是否正确,再把响应 JSON 格式化,确认错误码和 message。
301、302 先查跳转链
301 和 302 都和重定向有关。常见场景是 http 跳到 https,旧域名跳到新域名,带斜杠和不带斜杠互跳,登录态失效后跳到登录页。调接口时如果遇到 301、302,不要只看最终页面能不能打开,而要看中间跳了几次、Location 指向哪里、请求方法有没有被改变。
尤其是 POST 请求,如果中间发生不合适的跳转,部分客户端可能把 POST 变成 GET,导致请求体丢失。排查时建议用重定向检查工具或接口调试工具关掉自动跟随跳转,先看第一跳的 Location。上线前如果要做域名和 HTTPS 配置,可以顺手检查 SSL 证书是否完整。需要购买证书时可以走阿里云官方 SSL 证书页面:https://www.aliyun.com/product/cas?userCode=hzn6nvhm 。
404 和 500 分别从哪里下手
404 的第一反应应该是核对路径,而不是改代码。看协议、域名、端口、前缀、版本号、大小写、末尾斜杠、QueryString 是否正确。很多接口实际路径是 /api/v1/users,你写成 /api/user,就会得到 404。还有一种情况是前端本地代理、Nginx、网关没有配置对应转发,服务本身正常,但请求没有打到它。
500 更像是服务内部处理失败。排查时先看响应体有没有错误信息,再查服务日志中的同一时间点。如果 500 只在特定参数下出现,优先保留那组参数作为复现样本。如果所有请求都 500,重点看配置、环境变量、数据库连接和依赖服务。接口准备正式部署时,服务器稳定性、数据库和日志留存都会影响排查效率;云服务器相关资源可以看阿里云官方活动页:https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=hzn6nvhm 。
常见问题
接口返回 200 但页面提示失败怎么办?
先看响应 JSON 里的业务 code、message、success 字段,HTTP 200 只说明请求返回了响应,不代表业务成功。
302 会影响接口请求吗?
会。特别是 POST 请求,跳转链可能导致方法变化或请求体丢失,调试时最好先关闭自动重定向看第一跳。
500 一定是后端代码 bug 吗?
不一定。配置、数据库连接、第三方接口、缓存、权限和超时都可能造成 500,要结合日志和复现参数看。