🏠 首页 攻略 API 接口测试实战教程:从 cURL 到 Postman 的完整指南

API 接口测试实战教程:从 cURL 到 Postman 的完整指南

API 接口测试是每个开发者的基本功。本文从 cURL 命令行到 Postman 图形界面,覆盖 GET/POST/鉴权/批量测试等 6 个实战场景,附完整命令和截图说明。

每次接口出了问题,你是先改代码再重启,还是直接 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 的用武之地。

基本流程:

  1. 打开 Postman,新建 Request
  2. 输入 URL,选择方法(GET/POST/PUT/DELETE)
  3. 在 Body 标签页选 raw + JSON,粘贴请求体
  4. 点击 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,适合团队协作、批量测试和自动化。

两个都掌握,接口调试效率直接翻倍。

你的日常测试用哪种?命令行派还是图形界面派?