Postman — 具有图形界面的 API 测试平台,支持 REST、GraphQL、WebSocket 和 gRPC 协议。该工具允许创建和发送 HTTP 请求、将其组织到集合中、通过脚本自动执行测试并为端点生成文档。根据 Postman Learning Center (2026) 的数据,全球有超过 2500 万开发者在使用该平台。
要点
Postman 是用于开发和测试 API 的平台,可提供桌面应用程序(Windows、macOS、Linux)和网页版本。Postman 最初于 2012 年作为 Chrome 扩展创建,现已发展为支持监控、mock 服务器和客户端代码生成的完整生态系统。
Postman 支持所有 HTTP 方法:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS。请求体可以是 JSON、XML、form-data、x-www-form-urlencoded 和 binary 格式。响应以语法高亮、Pretty-print 以及查看原始标头的方式显示。
内置的身份验证类型包括 Bearer Token、Basic Auth、Digest Auth、OAuth 1.0、OAuth 2.0、API Key 和 AWS Signature。Postman 会根据所选类型自动添加 Authorization 标头,从而无需手动复制令牌即可加快受保护端点的测试。
Postman 界面 由侧边栏(Collections、APIs、Environments)、工作区(Request Builder/Response Viewer)和底部面板(Console、Runner)组成。Params 选项卡允许以表格形式编辑 URL 的查询参数,Headers 选项卡用于管理 HTTP 标头。
Console(View → Show Postman Console)按时间顺序记录所有网络请求和响应,包括中间的跳转和标头。在调试复杂的 OAuth 流程和跳转链时,它是不可或缺的工具,此时标准的 Response Viewer 仅显示最终结果。
Postman 支持团队工作区(Workspaces),并通过 Fork 和 Merge 对集合进行版本控制。团队成员可以评论请求、提出修改建议并实时同步集合。Public Workspace 允许为外部开发者发布 API 文档。
基本请求在 Postman 中通过选择 HTTP 方法并在地址栏中输入 URL 来创建。发送后,响应会显示在底部面板中,包含状态代码、执行时间和大小。请求参数在输入时会自动编码。
在 URL 和请求体中可以使用 {`{`}}$variable${`}`} 格式的动态变量。内置变量 {`{`}$guid${`}`}、{`{`}$timestamp${`}`} 和 {`{`}$randomInt${`}`} 会为每个请求生成唯一值。代码片段可通过 Code(>)按钮获取,该按钮会以 cURL、Python、JavaScript、Kotlin、Swift 等语言生成等效请求。
// Pre-request 脚本示例:生成 HMAC 签名
const timestamp = Date.now().toString();
const secret = pm.environment.get("api_secret");
const hash = CryptoJS.HmacSHA256(timestamp, secret);
pm.request.headers.add({
key: "X-Signature",
value: hash.toString()
});
集合 是按项目或功能模块分组的相关请求集合。每个集合都可以包含嵌套文件夹、公共标头和 Pre-request 脚本,这些脚本会在集合中的每个请求之前执行。请求的顺序通过拖放来设置。
Postman 支持五个层级的变量:global、collection、environment、data 和 local。冲突解决的优先级——从局部到全局。Environment 文件包含不同环境的键值对:development、staging、production。切换环境会自动更改所有 URL 和令牌。
| 层级 | 可见范围 | 优先级 |
|---|---|---|
| Local | 当前请求 | 1(最高) |
| Data | Collection Runner(来自 CSV/JSON) | 2 |
| Environment | 活动环境 | 3 |
| Collection | 整个集合 | 4 |
| Global | 整个工作区 | 5 |
Postman 允许在 Tests 选项卡中编写 JavaScript 测试,这些测试会在收到响应后执行。测试会检查状态代码、响应体、标头和执行时间。结果会显示在 Test Results 面板中,并带有彩色的通过指示。
pm 对象提供了处理响应的方法:pm.response、pm.expect、pm.variables。请求链式调用通过将某个请求响应中的数据保存到变量中,并在下一个请求中使用来实现。这是构建集成测试以及通过一系列 API 调用验证业务逻辑的基础。
// 测试:检查响应结构并保存令牌
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
});
const json = pm.response.json();
pm.environment.set("auth_token", json.data.token);
Collection Runner 会依次运行集合中的所有请求,并在每一步执行测试。Newman 是 Postman 面向 CI/CD 管道(Jenkins、GitHub Actions、GitLab CI)的控制台版本。Newman 会以 JSON、JUnit 和 HTML 格式导出报告,以便与监控系统集成。
GraphQL 请求在 Postman 中通过 POST 发送到单个端点,请求体为 JSON 格式。GraphQL(Beta)选项卡提供了带有语法高亮、字段自动补全和模式的可视化编辑器。请求变量在单独的 Variables 面板中传递。
Postman 通过带有消息面板的独立界面支持 WebSocket 连接。可以发送文本和二进制消息、查看连接历史并在断开时自动重新连接。Socket.IO 客户端在与 Engine.IO 协议兼容的模式下运行。
// 通过 pm API 在 Postman 中进行 WebSocket 测试
const ws = new WebSocket("wss://echo.websocket.org");
ws.onmessage = (event) => {
pm.test("Echo response received", () => {
pm.expect(event.data).to.eql("Hello");
});
};
Postman 的 mock 服务器 允许基于现有集合模拟 API 端点。当后端尚未就绪而前端或移动应用已在开发中时,这一点非常有用。mock 服务器会返回集合中的响应示例,并带有正确的标头和状态代码。
mock 服务器可以一键从集合创建:选择集合 → Mock Servers → Add a new mock server。Postman 会生成一个唯一的 URL,可以在应用程序代码中使用它来代替真实 API。对于集合中的每个请求,mock 都会返回保存的 Example Response,从而可以在后端完成之前检查 UI。
Monitors 会按计划(每 5 分钟、每小时或每天)运行集合,并检查 API 的可用性和正确性。测试失败时,监控器会向电子邮件或 Slack 发送通知。监控在 Postman 云端运行,不需要单独的服务器,免费套餐每月支持多达 10,000 个请求。
// 用于监控的测试:检查响应时间
pm.test("Response time < 2000ms", () => {
pm.expect(pm.response.responseTime).to.be.below(2000);
});
pm.test("Content-Type is JSON", () => {
pm.response.to.have.header("Content-Type");
});
Postman 提供了安全使用 API 密钥的机制。Secret 类型的变量会被加密,并且不会在界面中显示。对于团队协作,请使用具有 Admin、Editor 和 Viewer 角色的 Workspace。
创建环境变量时请选择 Secret 类型——该值会在所有界面中以星号隐藏。机密在共享时不会导出到集合中,也不会显示在 Newman 日志中。建议只将密码和令牌存储在 Secret 变量中。
Postman 支持与 HashiCorp Vault 和 AWS Secrets Manager 的集成。Pre-request 脚本可以动态地从外部存储中请求机密,从而避免在集合和环境文件中存储敏感数据。
Postman 提供了安全使用 API 密钥的机制。Secret 类型的变量会被加密,并且不会在界面中显示。对于团队协作,请使用具有 Admin、Editor 和 Viewer 角色的 Workspace。
创建环境变量时请选择 Secret 类型——该值会在所有界面中以星号隐藏。机密在共享时不会导出到集合中,也不会显示在 Newman 日志中。建议只将密码和令牌存储在 Secret 变量中。
Postman 支持与 HashiCorp Vault 和 AWS Secrets Manager 的集成。Pre-request 脚本可以动态地从外部存储中请求机密,从而避免在集合和环境文件中存储敏感数据。
常见问题
Postman 提供了更广泛的生态系统:集合、环境、监控、mock 服务器以及用于 CI/CD 的 Newman。Insomnia 则专注于轻量和速度,内存占用更小。Postman 更适合团队协作,Insomnia — 适合个人使用。
在第一个请求的 Tests 中将令牌保存到环境变量:pm.environment.set("token", pm.response.json().token)。在第二个请求中,在 Authorization 标头中使用 {`{`}$token${`}`} 变量。Runner 会在顺序运行时自动替换该值。
可以,通过 Import → Raw Text 按钮。Postman 会自动解析 cURL 命令并创建带有标头、方法和请求体的请求。支持所有 cURL 标志,包括 -H、-d、-F 和 -u。反向转换可通过 Code(<>)按钮完成。
使用带有 JSON 请求体的 POST 请求:{"query": "..."}。GraphQL 选项卡提供了可视化编辑器,可通过 Introspection Query 加载模式。请求变量在同一 JSON 对象的 variables 字段中传递。
Newman 是 Postman 用于在 CI/CD 中运行集合的控制台版本。通过 npm 安装,支持 HTML 报告以及与 Jenkins、GitHub Actions 和 GitLab CI 的集成。可以在没有图形界面的情况下自动执行 API 回归测试。
结论
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。