接口报错先别慌,curl 排查五步法
为什么是 curl
因为 curl 只做一件事:发一个 HTTP 请求,把响应原样打出来。没有框架、没有拦截器、没有自动重定向,是个干净的对照组。
五步法
第一步:拿到原始响应
curl -i https://api.example.com/users/1
-i 会把响应头一起打出来。很多时候问题就在头部。
第二步:模拟真实请求
curl -i -X POST https://api.example.com/login \
-H 'Content-Type: application/json' \
-d '{"username":"test","password":"***"}'
第三步:逐样加减
如果 curl 能通、前端不通,那就是我这边少了什么。常见的是:
- 少了
Authorization - 少了
Content-Type - 多了个自定义头触发 CORS 预检
第四步:看详细过程
curl -v https://api.example.com/users/1
-v 会打印 DNS、TCP、TLS、请求、响应的全过程。卡在哪一步一目了然。
第五步:定位到层
| 现象 | 大概位置 |
|---|---|
| 连不上 | DNS / 端口 / 防火墙 |
| 403 / 401 | 鉴权 |
| 502 / 504 | 网关或后端挂了 |
| 超时 | 后端慢或死锁 |
一个常用别名
alias curli='curl -i -sS --max-time 10'
-sS 是「安静但打错误」,--max-time 防止它一直挂着。
小结
curl 的价值不在于「能发请求」,而在于它是最小的可复现单元。把它跑通,问题范围立刻缩小一半。