5 分钟学会用 curl 调试接口
后端联调时,前端同学常说"接口调不通",后端同学回一句"我本地是好的"。这时候,与其在聊天记录里来回贴截图,不如打开终端,用 curl 一条命令把真相问出来。curl 是几乎每台 Linux / macOS 都自带的 HTTP 客户端,学会 6 个常用姿势,接口调试效率翻倍。
姿势一:GET 请求,看接口"活没活"
curl https://api.example.com/health
最简单的用法,直接拿到响应体。接口文档里的 GET 地址,复制过来就能试。
姿势二:-i,同时看"响应头"
curl -i https://api.example.com/health
-i 会把响应头和响应体一起打印。排查"为什么返回 302 跳转"或"缓存为什么不生效"时,先看响应头里的 Location、Cache-Control,答案往往就在那里。
姿势三:-X POST + -d,模拟"提交表单"
curl -X POST https://api.example.com/login \
-H "Content-Type: application/json" \
-d '{"username":"demo","password":"123456"}'
-X 指定请求方法,-H 加请求头,-d 带请求体。注意 JSON 里的双引号要用单引号把整个 -d 参数包起来,否则 shell 会解析出错。这是联调登录、注册类接口最常用的组合。
姿势四:-H 带上 Token,模拟"已登录用户"
curl https://api.example.com/me \
-H "Authorization: Bearer eyJhbGciOi..."
很多接口需要登录态。把浏览器或 App 里抓到的 Token 拼在 Authorization 头里,就能以真实用户身份请求,复现"登录后才出现的 bug"。
姿势五:-o,把"下载的东西"存下来
curl -o report.pdf https://api.example.com/export?date=2026-10-24
接口返回的是文件而不是 JSON?用 -o 指定保存的文件名。想看下载进度再加个 -#,会显示进度条。
姿势六:-w,只看"关键指标"
curl -o /dev/null -s -w "状态码:%{http_code} 耗时:%{time_total}s\n" \
https://api.example.com/health
-s 静默模式(不输出进度),-w 自定义输出格式。怀疑接口变慢时,用它量一下精确到毫秒的耗时,比"我感觉有点卡"有说服力得多。
一个真实排查案例
某天前端说"列表页空白",后端说"我这边返回正常"。curl 一试:
curl -i https://api.example.com/list
响应头里赫然写着 HTTP/1.1 401 Unauthorized——原来是前端请求没带 Token,根本不是后端数据问题。一条命令,5 秒钟,争论结束。
三个小提醒
第一,生产环境的 Token、密码不要贴到公共聊天记录或工单里,curl 命令自己在本地跑就好。第二,-d 默认发的 Content-Type 是表单格式,发 JSON 一定记得加 -H "Content-Type: application/json"。第三,curl 默认不跟随跳转,调试短链接或登录跳转时加上 -L。
把这 6 个姿势存进你的命令备忘录。下次再遇到"接口调不通",先 curl 一下再说话——数据面前,扯皮最少。
(全文约 900 字,原创)
- 点赞
- 收藏
- 关注作者
评论(0)