用 curl 也能测试接口?实用语法汇总

2025.7.14 杂七杂八 771
33BLOG智能摘要
curl 是测试接口的实用命令行工具,很多人误以为非 Postman 无法测试接口。本文总结了 7 种常用 curl 技巧:1. 最基本的 GET 请求可以直接使用 `curl https://api.example.com/users`,加 `-v` 可查看完整请求响应过程。2. 发送 POST 请求可通过 `-X POST` 指定方法,并根据数据类型选择 `-d` 直接参数、JSON 数据格式或读取文件。3. 认证与 Cookie 处理可通过 `-H` 添加 Authorization 头,或用 `-c` 保存 Cookie 和 `-b` 使用 Cookie。4. 文件上传时注意参数 `-F "file=@/path/to/file.jpg"` 中的 @ 符号是文件路径标记。5. 使用 `--max-time` 控制总超时,`--retry` 设置重试次数。6. 使用 `-s` 配合 jq 实现 JSON 数据的静默输出与美化。7. 最后提供了一条综合调试命令,包含常用参数组合,方便调试与记录响应。curl 功能强大,远不止本文所列,包括 HTTP/2、代理配置与速度限制等功能都值得关注。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

谁说 Postman 才是唯一?用 curl 测试接口的 7 个实战技巧

用 curl 也能测试接口?实用语法汇总

上周排查一个诡异的接口问题,发现团队里新来的小伙伴居然不知道能用 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的我默默打开了终端…学一招是一招