Postman:它是什么,API 测试以及与请求相关的工作

作者: IT Sectr 发布日期: 2026-05-08 阅读时间: 9 分钟

Postman — 具有图形界面的 API 测试平台,支持 REST、GraphQL、WebSocket 和 gRPC 协议。该工具允许创建和发送 HTTP 请求、将其组织到集合中、通过脚本自动执行测试并为端点生成文档。根据 Postman Learning Center (2026) 的数据,全球有超过 2500 万开发者在使用该平台。

要点

  • Postman — 具有可视化请求编辑器、集合和环境变量的通用 API 客户端。
  • Collections 将请求分组,并可通过 Collection Runner 配合 JavaScript 检查进行运行。
  • 环境变量 允许在 dev、staging 和 production 之间切换,而无需手动修改请求。
  • 测试自动化 通过使用 JavaScript 语言的 Pre-request Scripts 和 Tests 以及异步检查来实现。
  • 文档 基于集合自动生成,支持 Markdown 和多种语言的代码示例。

什么是 Postman 及其主要功能

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 界面与导航

Postman 界面 由侧边栏(Collections、APIs、Environments)、工作区(Request Builder/Response Viewer)和底部面板(Console、Runner)组成。Params 选项卡允许以表格形式编辑 URL 的查询参数,Headers 选项卡用于管理 HTTP 标头。

Postman Console

Console(View → Show Postman Console)按时间顺序记录所有网络请求和响应,包括中间的跳转和标头。在调试复杂的 OAuth 流程和跳转链时,它是不可或缺的工具,此时标准的 Response Viewer 仅显示最终结果。

Workspaces 与团队协作

Postman 支持团队工作区(Workspaces),并通过 Fork 和 Merge 对集合进行版本控制。团队成员可以评论请求、提出修改建议并实时同步集合。Public Workspace 允许为外部开发者发布 API 文档。

创建和发送 HTTP 请求

基本请求在 Postman 中通过选择 HTTP 方法并在地址栏中输入 URL 来创建。发送后,响应会显示在底部面板中,包含状态代码、执行时间和大小。请求参数在输入时会自动编码。

动态变量和代码片段

在 URL 和请求体中可以使用 {`{`}}$variable${`}`} 格式的动态变量。内置变量 {`{`}$guid${`}`}{`{`}$timestamp${`}`}{`{`}$randomInt${`}`} 会为每个请求生成唯一值。代码片段可通过 Code()按钮获取,该按钮会以 cURL、Python、JavaScript、Kotlin、Swift 等语言生成等效请求。

javascript
// 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(最高)
DataCollection Runner(来自 CSV/JSON)2
Environment活动环境3
Collection整个集合4
Global整个工作区5

通过脚本自动化 API 测试

Postman 允许在 Tests 选项卡中编写 JavaScript 测试,这些测试会在收到响应后执行。测试会检查状态代码、响应体、标头和执行时间。结果会显示在 Test Results 面板中,并带有彩色的通过指示。

pm 库与请求链式调用

pm 对象提供了处理响应的方法:pm.responsepm.expectpm.variables。请求链式调用通过将某个请求响应中的数据保存到变量中,并在下一个请求中使用来实现。这是构建集成测试以及通过一系列 API 调用验证业务逻辑的基础。

javascript
// 测试:检查响应结构并保存令牌
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

Collection Runner 会依次运行集合中的所有请求,并在每一步执行测试。Newman 是 Postman 面向 CI/CD 管道(Jenkins、GitHub Actions、GitLab CI)的控制台版本。Newman 会以 JSON、JUnit 和 HTML 格式导出报告,以便与监控系统集成。

使用 GraphQL 和 WebSocket

GraphQL 请求在 Postman 中通过 POST 发送到单个端点,请求体为 JSON 格式。GraphQL(Beta)选项卡提供了带有语法高亮、字段自动补全和模式的可视化编辑器。请求变量在单独的 Variables 面板中传递。

WebSocket 和 Socket.IO 测试

Postman 通过带有消息面板的独立界面支持 WebSocket 连接。可以发送文本和二进制消息、查看连接历史并在断开时自动重新连接。Socket.IO 客户端在与 Engine.IO 协议兼容的模式下运行。

javascript
// 通过 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 服务器与监控

Postman 的 mock 服务器 允许基于现有集合模拟 API 端点。当后端尚未就绪而前端或移动应用已在开发中时,这一点非常有用。mock 服务器会返回集合中的响应示例,并带有正确的标头和状态代码。

创建 mock 服务器

mock 服务器可以一键从集合创建:选择集合 → Mock Servers → Add a new mock server。Postman 会生成一个唯一的 URL,可以在应用程序代码中使用它来代替真实 API。对于集合中的每个请求,mock 都会返回保存的 Example Response,从而可以在后端完成之前检查 UI。

通过 Postman Monitors 监控 API

Monitors 会按计划(每 5 分钟、每小时或每天)运行集合,并检查 API 的可用性和正确性。测试失败时,监控器会向电子邮件或 Slack 发送通知。监控在 Postman 云端运行,不需要单独的服务器,免费套餐每月支持多达 10,000 个请求。

javascript
// 用于监控的测试:检查响应时间
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 变量中。

与 Vault 的集成

Postman 支持与 HashiCorp Vault 和 AWS Secrets Manager 的集成。Pre-request 脚本可以动态地从外部存储中请求机密,从而避免在集合和环境文件中存储敏感数据。

安全与机密信息管理

Postman 提供了安全使用 API 密钥的机制。Secret 类型的变量会被加密,并且不会在界面中显示。对于团队协作,请使用具有 Admin、Editor 和 Viewer 角色的 Workspace。

变量加密

创建环境变量时请选择 Secret 类型——该值会在所有界面中以星号隐藏。机密在共享时不会导出到集合中,也不会显示在 Newman 日志中。建议只将密码和令牌存储在 Secret 变量中。

与 Vault 的集成

Postman 支持与 HashiCorp Vault 和 AWS Secrets Manager 的集成。Pre-request 脚本可以动态地从外部存储中请求机密,从而避免在集合和环境文件中存储敏感数据。

常见问题

Postman 与 Insomnia 有什么区别?

Postman 提供了更广泛的生态系统:集合、环境、监控、mock 服务器以及用于 CI/CD 的 Newman。Insomnia 则专注于轻量和速度,内存占用更小。Postman 更适合团队协作,Insomnia — 适合个人使用。

如何在请求之间传递授权令牌?

在第一个请求的 Tests 中将令牌保存到环境变量:pm.environment.set("token", pm.response.json().token)。在第二个请求中,在 Authorization 标头中使用 {`{`}$token${`}`} 变量。Runner 会在顺序运行时自动替换该值。

可以将 cURL 命令导入 Postman 吗?

可以,通过 Import → Raw Text 按钮。Postman 会自动解析 cURL 命令并创建带有标头、方法和请求体的请求。支持所有 cURL 标志,包括 -H、-d、-F 和 -u。反向转换可通过 Code(<>)按钮完成。

如何在 Postman 中测试 GraphQL?

使用带有 JSON 请求体的 POST 请求:{"query": "..."}。GraphQL 选项卡提供了可视化编辑器,可通过 Introspection Query 加载模式。请求变量在同一 JSON 对象的 variables 字段中传递。

什么是 Newman,它有什么作用?

Newman 是 Postman 用于在 CI/CD 中运行集合的控制台版本。通过 npm 安装,支持 HTML 报告以及与 Jenkins、GitHub Actions 和 GitLab CI 的集成。可以在没有图形界面的情况下自动执行 API 回归测试。

结论

  • Postman — 用于测试 REST、GraphQL、WebSocket 和 gRPC API 的通用平台,拥有 2500 万用户。
  • 集合 支持嵌套文件夹和公共脚本,按项目将请求分组。
  • 环境变量 无需手动编辑即可在 dev、staging 和 production 之间无缝切换。
  • 测试自动化 通过使用 pm 对象的 JavaScript 脚本以及 Collection Runner 进行批量运行来实现。
  • Newman 集成到 CI/CD 管道中,在每次部署时对 API 进行回归测试。
  • 动态变量 通过 $guid、$timestamp 和 $randomInt 简化了使用唯一数据的测试。
  • WebSocket 和 GraphQL 支持将 Postman 的应用范围扩展到经典 REST 请求之外。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读