谁说 Postman 才是唯一?用 curl 测试接口的 7 个实战技巧
上周排查一个诡异的接口问题,发现团队里新来的小伙伴居然不知道能用 curl 直接测试接口。看着他手忙脚乱地安装 Postman 的样子,我突然意识到:这个被我们当作”上古神器”的命令行工具,可能正被越来越多的人遗忘。今天就来分享下我这些年用 curl 测试接口的实战心得。
1. 最基础的 GET 请求
刚入行时我总觉得 curl 参数复杂,直到 mentor 告诉我:”记住,90% 的情况你只需要这个:”
curl https://api.example.com/users
没错,不加任何参数时默认就是 GET 请求。加上 -v
参数能看到完整的请求/响应过程,排查问题特别有用:
curl -v https://api.example.com/users
2. 发送 POST 请求的三种姿势
第一次用 curl 发 POST 时我踩过坑:忘记加 -X POST
结果变成了 GET。现在我会根据场景选择不同方式:
表单提交(记得 Content-Type 会自动设置):
curl -d "name=John&age=30" https://api.example.com/users
JSON 数据(需要手动指定头信息):
curl -X POST -H "Content-Type: application/json"
-d '{"name":"John","age":30}' https://api.example.com/users
从文件读取(大段 JSON 时特别方便):
curl -X POST -H "Content-Type: application/json"
-d @data.json https://api.example.com/users
3. 认证和 Cookie 处理
有次调试 OAuth2.0 接口,在 Postman 里配了半天,结果用 curl 一行搞定:
curl -H "Authorization: Bearer your_token" https://api.example.com/protected
处理 Cookie 会话也很简单:
# 保存 Cookie
curl -c cookies.txt https://example.com/login
# 使用 Cookie
curl -b cookies.txt https://example.com/dashboard
4. 文件上传的坑与技巧
曾经因为少写一个 @ 符号,debug 了半小时文件上传失败的问题:
curl -F "file=@/path/to/file.jpg" https://api.example.com/upload
注意那个 @
符号!它告诉 curl 这是个文件路径而不是普通字符串。
5. 超时控制与重试
测试不稳定的接口时,这两个参数救过我的命:
curl --max-time 5 --retry 3 https://unstable-api.example.com
--max-time
设置超时秒数,--retry
指定重试次数。
6. 输出美化与过滤
当接口返回大段 JSON 时,可以配合 jq 工具:
curl -s https://api.example.com/users | jq
那个 -s
参数是静默模式,去掉进度条等干扰信息。
7. 我的终极调试命令
最后分享我的调试”瑞士军刀”命令,包含常用参数组合:
curl -v -X POST
-H "Content-Type: application/json"
-H "Authorization: Bearer token123"
--connect-timeout 5
--max-time 10
--retry 2
-d @request.json
-o response.txt
https://api.example.com/endpoint
解释几个关键参数:
• -o
把响应保存到文件
• --connect-timeout
连接超时
• 两个 -H
设置请求头
其实 curl 的强大远不止这些,像 HTTP/2 支持、代理设置、速度限制等都很有用。下次测试接口时,不妨先试试这个命令行老伙计,说不定会有惊喜!
原来postman不是必须的!curl可以直接测试接口这招太实用了,赶紧收藏学习
作者说的那个漏写@符号的坑我也踩过,通宵改到凌晨两点才发现😂
新手强烈推荐从最基础的GET请求开始尝试,curl其实没想象中复杂
这些参数组合太有用了。想问下作者遇到HTTPS证书错误时有什么参数可以忽略验证吗?
终极调试命令收藏了!我们团队用的Jenkins部署经常需要调试接口
看完了有点小激动,这就去试一试哈哈!感觉比postman更适合在服务器上直接调试
一直用postman的我默默打开了终端…学一招是一招