用 curl 调试 HTTP 接口的六个实用技巧
调接口的时候,很多人第一反应是打开 Postman 或者写段脚本,其实大部分场景下 curl 一行命令就够了。这里分享六个我日常用得最多的技巧,每一条都可以直接抄走复用。
一、看清楚请求到底发生了什么
curl -v https://example.com/api/user
-v 会把请求头、响应头、TLS 握手过程全部打印出来。接口 401 了、证书不对、被重定向了,一眼就能看出是哪一层出了问题。如果只想看响应头,用 -I 更干净。
二、带上 JSON 发 POST
curl -X POST https://example.com/api/login -H "Content-Type: application/json" -d '{"username":"test","password":"123456"}'
注意 -H 指定 Content-Type 很关键,很多后端服务不写这个字段就解析不了 body。如果 body 里有中文或者结构比较复杂,建议先存成文件再用 -d @data.json 发出去,避免命令行转义把内容弄乱。
三、把响应头和响应体分开存
curl -D headers.txt -o body.json https://example.com/api/data
-D 把响应头写进文件,-o 把响应体存下来。接口返回的 JSON 太长刷屏的时候特别好用,配合 jq 再处理 body.json,排查效率高很多。
四、测接口到底慢在哪一步
curl -w "DNS:%{time_namelookup}s 连接:%{time_connect}s 首字节:%{time_starttransfer}s 总耗时:%{time_total}s
" -o /dev/null -s https://example.com/api
-w 能把各阶段耗时拆开:域名解析、建连、首字节返回。接口"偶尔慢"的问题,加这一行往往就能定位到是 DNS 慢、网络慢还是服务端处理慢,不用再抓包猜。
五、带着 Cookie 会话调试
curl -c cookies.txt -b cookies.txt https://example.com/login
curl -b cookies.txt https://example.com/api/profile
-c 保存服务器下发的 Cookie,-b 把它带回去,两次请求之间就能维持登录态。调试需要登录的接口时,不用每次手动复制 token 了。
六、忽略证书与强制解析
curl -k https://self-signed.example.com
curl --resolve example.com:443:10.0.0.5 https://example.com
自签证书的测试环境加 -k 跳过校验;--resolve 可以把域名指到指定 IP,灰度验证、绑定源站、绕过负载均衡直连后端的时候非常方便。
小结
curl 的好处是几乎所有环境都自带、不用装客户端、命令能直接存进文档复用。把常用的几条命令整理成自己的速查笔记,接口调试的大部分场景都能覆盖。如果你还停留在"只会 curl 一个网址"的阶段,不妨从上面这六条开始试起来。
- 点赞
- 收藏
- 关注作者
评论(0)