每次接口出了问题,你是先改代码再重启,还是直接 curl 一下看返回?
选后者说明你已经有调试意识了。选前者……可能得多调几轮。
API 测试能力,决定了一个开发者的排错效率。这篇教程不讲虚的,直接上 6 个最常见场景,从最简单的 GET 请求到带鉴权的复杂调用,每个都附完整命令。
场景一:最简单的 GET 请求
curl https://api.example.com/users
就这么一行。返回 JSON 数据,搞定。
但实际调试时,你可能需要看响应头、状态码、或者把输出保存到文件:
# 只返回响应头(不下载内容)
curl -I https://api.example.com/users
# 查看详细过程(DNS、连接、TLS 握手)
curl -v https://api.example.com/users
# 保存到文件
curl -o response.json https://api.example.com/users
-I 只拿头部信息,不拖带宽。-v verbose 模式,连接过程中的每一步都会打印出来,排查网络问题时特别有用。-o 把响应体写入文件,适合测试大响应数据。
场景二:POST 请求发送 JSON 数据
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "张三", "email": "zhangsan@example.com"}'
三个关键部分:
-X POST指定请求方法(有些 curl 版本可以省略,不指定默认 GET)-H设置请求头,这里告诉服务器发的是 JSON-d发送请求体
如果你的数据在文件里(比如 500 行的 JSON),别在命令行里拼字符串,用 -d @data.json 从文件读取:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @new-user.json
场景三:带 API Key 的鉴权请求
很多接口需要你传 API Key 或 Token。常见做法是通过 Header 传:
curl https://api.example.com/data \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
有些接口支持通过 Query 参数传:
curl "https://api.example.com/data?api_key=YOUR_KEY"
如果是用 Key-Value 表单传(比较少见,但某些老 API 会这样):
curl -X POST https://api.example.com/login \
-d "username=admin&password=secret"
场景四:查看响应时间和性能
排查接口慢的问题,curl 自带计时功能:
curl -o /dev/null -s -w "DNS解析: %{time_namelookup}s\n连接: %{time_connect}s\n首字节: %{time_starttransfer}s\n总耗时: %{time_total}s\n" \
https://api.example.com/users
输出示例:
DNS解析: 0.012s
连接: 0.035s
首字节: 0.287s
总耗时: 0.312s
通过对比这几个时间,你能一眼看出问题出在哪:DNS 慢、TCP 连接慢、还是服务器处理慢。
-o /dev/null 把响应体扔掉(你只看时间,不需要内容),-s 安静模式不显示进度条。
场景五:文件上传
上传文件用 -F(form)参数:
curl -X POST https://api.example.com/upload \
-F "file=@/path/to/photo.jpg" \
-F "title=我的照片"
@ 后面跟文件路径。多个文件也行:
curl -X POST https://api.example.com/upload \
-F "files=@photo1.jpg" \
-F "files=@photo2.jpg" \
-F "album=旅行2026"
场景六:用 Postman 做图形化测试
命令行虽然快,但不是所有场景都适合。比如:
- 需要频繁切换环境变量(开发/测试/生产)
- 团队协作需要共享测试用例
- 需要做自动化集成测试
- 给非技术人员演示
这就是 Postman 的用武之地。
基本流程:
- 打开 Postman,新建 Request
- 输入 URL,选择方法(GET/POST/PUT/DELETE)
- 在 Body 标签页选 raw + JSON,粘贴请求体
- 点击 Send,看响应
加分操作:
- 环境变量:Settings → Environment,把 base URL、token 等设为变量,一键切换环境
- Pre-request Script:在请求发送前自动跑脚本,比如自动签名、自动生成时间戳
- Tests:用 JavaScript 写断言,自动验证响应格式和数据正确性
// 在 Tests 标签页写:
pm.test("状态码是 200", function () {
pm.response.to.have.status(200);
});
pm.test("返回的 users 是数组", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.users).to.be.an('array');
});
Postman 还自带 Collection Runner,可以批量跑一组请求,配合 Newman(命令行版 Postman)还能接入 CI/CD 流程。
实用小贴士
1. 别在密码里裸写 Token
调试时经常要把 Token 复制粘贴到 curl 里,养成习惯:放在环境变量里。
export API_TOKEN="your_token_here"
curl https://api.example.com/data -H "Authorization: Bearer $API_TOKEN"
2. 用 --compressed 自动解压缩
很多 API 返回 gzip 压缩的数据,加这个参数 curl 会自动解压:
curl --compressed https://api.example.com/data
3. 设置超时,别等太久
curl --connect-timeout 10 --max-time 30 https://api.example.com/slow-endpoint
--connect-timeout 连接超时 10 秒,--max-time 总超时 30 秒。超时后直接报错,不会挂在那等你。
4. 记录请求,方便复现
curl 有个 --trace 参数,能输出完整的请求和响应十六进制数据:
curl --trace debug.log https://api.example.com/data
排查疑难杂症时,这个日志比任何调试工具都好使。
总结
命令行用 curl,快速上手、无需安装、脚本友好。图形界面用 Postman,适合团队协作、批量测试和自动化。
两个都掌握,接口调试效率直接翻倍。
你的日常测试用哪种?命令行派还是图形界面派?