3步搞定API调试:不装Postman,用浏览器+终端快速排查接口问题
你有没有遇到过这种场景——
接口突然返回401,不确定是token过期还是后端逻辑改了。打开Postman,登录态丢了,得重新配置一遍请求头。
其实不用Postman。浏览器DevTools + 一条curl命令 + 一个在线JSON工具,90%的接口排查问题都能搞定。
3步,下面是实际操作。
第1步:浏览器DevTools快速查看真实请求
很多人用Postman是因为它界面好看。但Postman发出的请求和你浏览器实际发出的请求,经常不是同一个东西。
最直接的排查起点:DevTools Network 面板。
打开浏览器 → F12 → Network → 筛选XHR → 刷新页面 → 找到有问题的请求。
看这4个字段,基本能定位80%的问题:
Status Code
200 正常,401/403 认证问题,404 路径或资源不存在,500 后端挂了。
Request URL 确认请求打的是哪个环境。测试环境配错地址是最常见的"灵异bug"。
Headers
重点看 Authorization、X-Request-Id、Content-Type。
有时候后端说"你们请求头不对",但你不记得前端实际发了什么。DevTools里能看到真实值,不用再靠记忆。
Response 响应体
如果是JSON,DevTools默认会折叠。点右边 Preview 标签,可以树形展开,比看纯文本舒服很多。
第2步:用curl复现请求(最有用的一步)
DevTools里的每个请求,都可以直接复制成curl命令。
Chrome和Firefox都支持:右键点击请求 → Copy → Copy as cURL。
复制出来之后,在终端里跑一遍:
# 自动复制出来的 curl 长这样(简化版)
curl 'https://api.example.com/v1/orders?page=1' \
-H 'Authorization: Bearer eyJhbGci...' \
-H 'Content-Type: application/json' \
--data-raw '{"status":"active","limit":20}'
这一步的价值在哪?
验证是不是前端的问题。
如果curl能正常返回,但浏览器里报错,问题在前端。大概率是CORS、请求头被拦截、或者JS代码里把参数拼错了。
验证是不是token的问题。
把token换一个正常的再试,401消失了就是token过期或者格式不对。
保存可复现的请求。
把curl命令贴到Git issue里,别人能直接跑,不用你远程共享屏幕。
实用变体:快速测试不同的请求参数
# 测试不带 Authorization(确认是不是认证问题)
curl -X GET 'https://api.example.com/v1/orders' \
-H 'Content-Type: application/json'
# 换到 staging 环境
curl -X GET 'https://staging-api.example.com/v1/orders' \
-H "Authorization: Bearer $STAGING_TOKEN" \
-H 'Content-Type: application/json'
# 查看响应头(排查 CORS 预检失败)
curl -v -X OPTIONS 'https://api.example.com/v1/orders' \
-H 'Origin: https://your-frontend.com' \
-H 'Access-Control-Request-Method: POST' \
2>&1 | grep -i 'access-control'
-v 参数会把完整的请求/响应头都打出来,CORS问题一眼可见。
第3步:在线JSON工具快速查看/格式化响应体
接口返回的JSON很大,嵌套很深,在终端里看很痛苦。
两个工具,免费,打开浏览器就能用:
json.cn(或类似的JSON在线工具) 把响应体贴进去,自动格式化,支持树形展开,可以直接点击某个字段查看路径。
比如接口返回:
{"data":{"items":[{"id":1,"meta":{"tags":["a","b"]}}],"page":1}}
想知道 meta.tags 的值,不用数括号,点树节点直接看。
Navbox的JSON Formatter(navbox.com.cn 内置工具) 支持粘贴、格式化、高亮,还能导出为不同缩进格式。处理大JSON比DevTools的预览舒服。
快速提取关键字段(jq,一行命令)
如果你终端里已经有JSON数据,不用打开浏览器,用jq直接提取:
# 保存响应到文件
curl -s 'https://api.example.com/v1/orders' \
-H "Authorization: Bearer $TOKEN" > /tmp/response.json
# 提取所有 item 的 id 和 status
jq '.data.items[] | {id: .id, status: .meta.status}' /tmp/response.json
# 提取响应里的错误信息
jq '.error // "无错误"' /tmp/response.json
# 统计返回的 item 数量
jq '.data.items | length' /tmp/response.json
jq 是终端里的JSON瑞士军刀。Mac和Linux都自带或一键安装。
安装(如果没装):
# macOS
brew install jq
# Ubuntu/Debian
sudo apt install jq
# 验证
jq --version
4种常见API问题的排查路径
| 症状 | 最可能的原因 | 快速验证方法 |
|---|---|---|
| 401 持续出现 | token过期或header拼错 | 检查 Authorization 的值,重新获取token |
| 403 持续出现 | 权限不足或IP被限制 | 检查响应体里的error message,联系管理员确认 |
| 404 偶发 | 路径拼错或环境配错 | 对比curl里的URL和实际请求的URL |
| 500 偶发 | 后端bug,请求参数触发了边界case | 保存完整curl命令,附带请求参数,提交给后端 |
| 响应体正常但前端报错 | CORS或JS解析问题 | curl -v 检查响应头里的 Access-Control-Allow-Origin |
| 偶尔超时 | 网络或后端慢 | 加 --connect-timeout 5 参数观察 |
什么时候还是值得用Postman
说句公道话,Postman有它的使用场景:
- 需要保存多个请求,形成完整的API collection
- 团队协作,共享workspace
- 需要自动化测试脚本(Postman Runner)
- 请求体很复杂,需要可视化编辑
但如果是快速排查一个接口的问题,DevTools + curl + JSON工具这套组合,比打开Postman重新配一遍请求头要快得多。
你现在排查API问题用什么方式?有觉得特别顺手的小技巧吗?评论区聊聊,我看看有没有我没想到的。