📮 Postman 全面指南
一、Postman 概述
Postman 是一款强大的 API 开发和测试工具,它提供了友好的用户界面,可以帮助开发者设计、测试、调试和文档化 API。Postman 支持各种 HTTP 方法、身份验证方式、请求参数和响应处理,是 API 开发过程中不可或缺的工具。
1.1 Postman 的核心功能
- API 测试:支持各种 HTTP 请求方法,参数设置,断言和测试脚本
- API 文档:自动生成和分享交互式 API 文档
- API 监控:监控 API 性能和可用性
- Mock 服务:创建模拟 API 响应,支持前端开发和测试
- 协作开发:团队协作,共享集合和环境
- 自动化工作流:创建复杂的测试场景和自动化工作流
1.2 Postman 的应用场景
- API 开发和调试
- API 测试自动化
- API 文档编写和分享
- API 性能监控
- 前后端并行开发(通过 Mock 服务)
- 团队协作开发 API
二、Postman 安装与配置
2.1 安装 Postman
Postman 提供了跨平台的桌面应用程序,可以在 Windows、macOS 和 Linux 上运行。
2.1.1 下载安装
- 访问 Postman 官网
- 根据您的操作系统选择相应的版本下载
- 按照安装向导完成安装
2.1.2 注册账户
安装完成后,需要注册一个 Postman 账户才能使用所有功能:
- 打开 Postman 应用程序
- 点击 "Sign Up Free" 按钮
- 填写邮箱、用户名和密码,或者使用 Google/GitHub 账户登录
2.2 配置 Postman
安装完成后,可以根据个人偏好进行一些基本配置。
2.2.1 界面语言设置
- 点击右上角的用户头像
- 选择 "Settings"
- 在 "General" 选项卡中找到 "Language"
- 选择您需要的语言(支持中文)
2.2.2 主题设置
- 点击右上角的用户头像
- 选择 "Settings"
- 在 "General" 选项卡中找到 "Theme"
- 选择 "Light"、"Dark" 或 "System"
三、Postman 基础使用
3.1 工作空间(Workspace)
工作空间是 Postman 中组织和协作的基本单位,每个工作空间可以包含多个集合、环境和 mock 服务。
3.1.1 创建工作空间
- 在左侧导航栏点击 "Workspaces"
- 点击 "Create Workspace" 按钮
- 填写工作空间名称、描述,并选择可见性(Public/Private)
- 点击 "Create Workspace" 完成创建
3.1.2 加入工作空间
- 在左侧导航栏点击 "Workspaces"
- 点击 "Join Workspace" 按钮
- 输入工作空间的邀请链接或搜索工作空间名称
- 点击 "Request to Join" 或 "Join" 按钮
3.2 集合(Collection)
集合是 Postman 中组织 API 请求的方式,一个集合可以包含多个请求、文件夹和子文件夹,便于分类和管理。
3.2.1 创建集合
- 在左侧导航栏点击 "Collections"
- 点击 "New Collection" 按钮
- 填写集合名称和描述
- 可以添加前置脚本(Pre-request Script)、测试脚本(Tests)和变量
- 点击 "Create" 完成创建
3.2.2 导入导出集合
导出集合:
- 右键点击需要导出的集合
- 选择 "Export"
- 选择导出格式(推荐 Collection v2.1)
- 选择保存位置,点击 "Save"
导入集合:
- 点击左侧导航栏的 "Import" 按钮
- 选择 "File"、"Link"、"Paste Raw Text" 或 "Folder"
- 选择需要导入的文件或输入链接/文本
- 点击 "Import" 完成导入
3.3 环境与变量
环境变量是 Postman 中非常强大的功能,可以帮助我们管理不同环境下的配置,如开发环境、测试环境和生产环境的 API 地址、端口、认证信息等。
3.3.1 创建环境
- 在左侧导航栏点击 "Environments"
- 点击 "New Environment" 按钮
- 填写环境名称
- 添加环境变量(变量名、初始值和当前值)
- 点击 "Save" 完成创建
3.3.2 使用变量
在请求 URL、参数、头信息或请求体中,可以使用 {{变量名}} 的形式引用变量。
示例:
https://{{base_url}}/api/{{api_version}}/users3.3.3 变量类型
Postman 支持多种类型的变量:
- 全局变量(Global Variables):在所有工作空间和集合中可用
- 环境变量(Environment Variables):在选定的环境中可用
- 集合变量(Collection Variables):在选定的集合中可用
- 局部变量(Local Variables):只在当前请求或测试脚本中临时可用
- 数据变量(Data Variables):通过数据文件(如 CSV、JSON)导入的变量
3.4 创建和发送请求
Postman 支持各种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。
3.4.1 基本请求
- 点击左上角的 "New" 按钮,选择 "Request"
- 填写请求名称和描述,选择所属的集合
- 选择请求方法(GET、POST、PUT、DELETE 等)
- 输入请求 URL
- 添加请求头(Headers)、请求参数(Params)或请求体(Body)
- 点击 "Send" 按钮发送请求
3.4.2 请求参数
在 "Params" 标签页中,可以添加查询参数(Query Params)和路径参数(Path Variables)。
示例:
https://api.example.com/users?page=1&limit=10| 参数名 | 值 | 描述 |
|---|---|---|
| page | 1 | 页码 |
| limit | 10 | 每页数量 |
3.4.3 请求头
在 "Headers" 标签页中,可以添加请求头信息。
常用请求头:
| 头名称 | 值 | 描述 |
|---|---|---|
| Content-Type | application/json | 请求体类型 |
| Authorization | Bearer | 认证信息 |
| Accept | application/json | 接受的响应类型 |
3.4.4 请求体
在 "Body" 标签页中,可以添加请求体内容。Postman 支持多种请求体格式:
- none:无请求体
- form-data:表单数据(支持文件上传)
- x-www-form-urlencoded:表单编码数据
- raw:原始数据(支持 JSON、XML、HTML、Text、JavaScript 等)
- binary:二进制数据(如文件)
- graphql:GraphQL 查询
JSON 请求体示例:
{
"name": "张三",
"email": "zhangsan@example.com",
"age": 28
}3.5 查看响应
发送请求后,可以在下方的响应区域查看响应结果。
3.5.1 响应概览
响应区域包含以下信息:
- 响应状态码:如 200 OK、404 Not Found、500 Internal Server Error 等
- 响应时间:请求从发送到接收响应的时间
- 响应大小:响应内容的大小
3.5.2 响应体
在 "Body" 标签页中,可以查看响应体内容,并可以选择不同的视图:
- Pretty:格式化显示(支持 JSON、XML、HTML 等)
- Raw:原始文本显示
- Preview:预览模式(HTML 响应时可用)
3.5.3 响应头
在 "Headers" 标签页中,可以查看响应头信息。
3.5.4 响应 Cookie
在 "Cookies" 标签页中,可以查看响应中的 Cookie 信息。
3.5.5 响应测试结果
在 "Test Results" 标签页中,可以查看测试脚本的执行结果。
四、Postman 高级功能
4.1 测试脚本
Postman 支持使用 JavaScript 编写测试脚本,可以在请求发送后验证响应结果。
4.1.1 编写测试脚本
- 在请求编辑界面切换到 "Tests" 标签页
- 编写 JavaScript 测试脚本
- 点击 "Send" 按钮发送请求,测试脚本会自动执行
- 在响应区域的 "Test Results" 标签页查看测试结果
4.1.2 测试脚本示例
// 检查响应状态码是否为 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 检查响应体是否包含指定字符串
pm.test("Response body contains 'success'", function () {
pm.expect(pm.response.text()).to.include("success");
});
// 检查响应体 JSON 格式是否正确
pm.test("Response is JSON format", function () {
pm.response.to.be.json;
});
// 检查响应体中的特定字段值
pm.test("User name is correct", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.eql("张三");
});
// 检查响应头是否包含指定字段
pm.test("Response headers contain 'Content-Type'", function () {
pm.response.to.have.header("Content-Type");
});
// 将响应中的值保存到环境变量
pm.test("Set token to environment variable", function () {
var jsonData = pm.response.json();
pm.environment.set("token", jsonData.token);
});4.1.3 常用测试断言
Postman 提供了丰富的断言方法:
pm.response.to.have.status(code):检查响应状态码pm.response.to.have.header(name):检查响应头pm.response.to.be.json:检查响应是否为 JSON 格式pm.expect(pm.response.text()).to.include(string):检查响应体是否包含字符串pm.expect(jsonData.field).to.eql(value):检查 JSON 字段值pm.expect(value).to.be.a(type):检查值的类型
4.2 前置脚本
前置脚本(Pre-request Script)是在请求发送前执行的 JavaScript 脚本,可以用于设置变量、生成随机数、签名等操作。
4.2.1 编写前置脚本
- 在请求编辑界面切换到 "Pre-request Script" 标签页
- 编写 JavaScript 脚本
- 点击 "Send" 按钮发送请求,前置脚本会在请求发送前执行
4.2.2 前置脚本示例
// 生成时间戳并保存到环境变量
var timestamp = Date.now();
pm.environment.set("timestamp", timestamp);
// 生成随机数
var randomNumber = Math.floor(Math.random() * 1000);
pm.environment.set("randomNumber", randomNumber);
// 生成签名
var apiKey = pm.environment.get("apiKey");
var secretKey = pm.environment.get("secretKey");
var nonce = Date.now();
var signature = CryptoJS.HmacSHA256(apiKey + nonce, secretKey).toString();
pm.environment.set("nonce", nonce);
pm.environment.set("signature", signature);
// 设置请求头
pm.request.headers.add({key: 'X-API-Key', value: apiKey});
pm.request.headers.add({key: 'X-Nonce', value: nonce});
pm.request.headers.add({key: 'X-Signature', value: signature});4.3 Mock 服务
Mock 服务是 Postman 提供的一项强大功能,可以在后端 API 尚未开发完成时,模拟 API 响应,支持前端开发和测试。
4.3.1 创建 Mock 服务
- 在左侧导航栏点击 "APIs"
- 点击 "New API" 按钮,创建一个新的 API
- 填写 API 名称和版本
- 点击 "Create Mock Server" 按钮
- 填写 Mock 服务名称,选择要模拟的集合
- 选择是否公开 Mock 服务
- 点击 "Create Mock Server" 完成创建
4.3.2 配置 Mock 响应
- 编辑集合中的请求
- 在 "Examples" 标签页中,点击 "Add Example"
- 设置响应状态码、响应头和响应体
- 点击 "Save Example" 保存示例
4.3.3 使用 Mock 服务
创建 Mock 服务后,Postman 会提供一个 Mock URL,可以使用这个 URL 发送请求,获取模拟的响应。
示例:
https://{{mock_id}}.mock.pstmn.io/api/users4.4 监控(Monitor)
Postman 监控功能可以定期发送请求,检查 API 的性能和可用性,并提供详细的监控报告。
4.4.1 创建监控
- 在左侧导航栏点击 "Monitors"
- 点击 "New Monitor" 按钮
- 选择要监控的集合
- 填写监控名称、描述和监控频率
- 选择监控的环境和地理位置
- 点击 "Create Monitor" 完成创建
4.4.2 查看监控报告
- 在左侧导航栏点击 "Monitors"
- 点击要查看的监控名称
- 可以查看监控概览、详细报告、性能趋势和错误分析
4.5 自动化测试
Postman 支持运行集合中的所有请求,实现自动化测试。
4.5.1 运行集合
- 右键点击要运行的集合
- 选择 "Run Collection"
- 在运行配置界面,选择环境、迭代次数、延迟时间等
- 点击 "Run Collection" 开始运行
4.5.2 数据驱动测试
Postman 支持使用数据文件(如 CSV、JSON)进行数据驱动测试:
- 准备数据文件(CSV 或 JSON 格式)
- 在运行配置界面,点击 "Select File" 按钮,选择数据文件
- 在测试脚本中使用
data.字段名引用数据文件中的值 - 点击 "Run Collection" 开始运行
CSV 数据文件示例:
username,password,expected_status
admin,admin123,200
user1,user123,200
invalid,invalid,401JSON 数据文件示例:
[
{
"username": "admin",
"password": "admin123",
"expected_status": 200
},
{
"username": "user1",
"password": "user123",
"expected_status": 200
},
{
"username": "invalid",
"password": "invalid",
"expected_status": 401
}
]数据驱动测试脚本示例:
// 使用数据文件中的数据
var username = data.username;
var password = data.password;
var expectedStatus = data.expected_status;
// 设置请求体
pm.request.body.raw = JSON.stringify({
"username": username,
"password": password
});
// 发送请求后验证响应
pm.test("Status code is " + expectedStatus, function () {
pm.response.to.have.status(expectedStatus);
});五、Postman 最佳实践
5.1 API 设计与开发
- 使用集合组织 API:按照功能模块或业务逻辑组织 API 请求
- 使用环境管理配置:为不同环境(开发、测试、生产)创建独立的环境变量
- 使用变量避免硬编码:将常用值、敏感信息和环境相关配置存储为变量
- 使用版本控制:定期导出和备份集合,使用 Git 等版本控制工具管理
- 使用工作流自动化:使用前置脚本和测试脚本实现请求之间的数据传递和依赖处理
5.2 测试与调试
- 编写全面的测试脚本:验证响应状态码、响应头、响应体内容和数据类型
- 使用动态数据:使用前置脚本生成随机数、时间戳等动态数据
- 模拟错误场景:创建模拟错误响应的示例,测试错误处理逻辑
- 使用数据驱动测试:使用 CSV 或 JSON 数据文件测试多种场景
- 使用控制台调试:在脚本中使用
console.log()输出调试信息
5.3 团队协作
- 使用团队工作空间:创建团队工作空间,方便团队成员共享和协作
- 设置角色和权限:根据团队成员的角色设置不同的权限(管理员、编辑者、查看者)
- 使用 API 文档:自动生成 API 文档,方便团队成员查阅和使用
- 使用 Mock 服务:前端和后端并行开发,提高开发效率
- 使用监控功能:监控 API 性能和可用性,及时发现和解决问题
5.4 性能与安全
- 优化请求数量:合并多个请求,减少 API 调用次数
- 使用缓存:对频繁请求的响应进行缓存,提高性能
- 保护敏感信息:使用环境变量存储敏感信息,避免硬编码
- 使用认证和授权:实施适当的认证和授权机制,保护 API 安全
- 定期更新 Postman:及时更新 Postman 到最新版本,获取性能优化和安全修复
六、Postman 集成
6.1 与 CI/CD 工具集成
Postman 可以与常见的 CI/CD 工具集成,实现自动化测试和持续集成。
6.1.1 与 Jenkins 集成
- 在 Postman 中导出集合和环境
- 安装 Newman(Postman 的命令行工具):
npm install -g newman - 在 Jenkins 中创建一个新的构建任务
- 添加构建步骤,执行 Newman 命令:
newman run collection.json -e environment.json -r cli,html --reporter-html-export report.html6.1.2 与 GitHub Actions 集成
在项目的 .github/workflows 目录下创建一个 YAML 文件:
name: API Tests
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install Newman
run: npm install -g newman newman-reporter-html
- name: Run API Tests
run: newman run collection.json -e environment.json -r cli,html --reporter-html-export report.html
- name: Upload Report
uses: actions/upload-artifact@v2
with:
name: api-test-report
path: report.html6.2 与 API 文档工具集成
6.2.1 与 Swagger/OpenAPI 集成
- 在 Postman 中点击 "Import" 按钮
- 选择 "Link" 选项,输入 Swagger/OpenAPI 文档的 URL
- 点击 "Import" 按钮,Postman 会自动解析并创建相应的集合
6.2.2 生成 API 文档
- 在 Postman 中编辑集合,添加详细的描述和示例
- 点击集合名称右侧的 "..." 按钮,选择 "View Documentation"
- Postman 会生成交互式 API 文档,可以分享给团队成员
6.3 与版本控制工具集成
Postman 提供了与 Git 等版本控制工具的集成,可以将集合导出为 JSON 文件,并提交到版本控制系统中。
推荐工作流程:
- 在 Postman 中创建和编辑集合
- 定期导出集合为 JSON 文件
- 将 JSON 文件提交到 Git 仓库
- 团队成员可以导入最新的集合 JSON 文件
七、Postman 常见问题与解决方案
7.1 请求发送失败
问题: 请求无法发送,显示连接超时或网络错误。
解决方案:
- 检查网络连接是否正常
- 检查 API URL 是否正确
- 检查防火墙设置是否阻止了 Postman 的网络连接
- 尝试使用代理服务器
7.2 环境变量不生效
问题: 引用的环境变量没有被正确解析。
解决方案:
- 确保选择了正确的环境
- 确保变量名拼写正确
- 检查变量值是否正确设置
- 尝试使用
console.log(pm.environment.get("variable_name"))调试变量值
7.3 测试脚本执行失败
问题: 测试脚本执行失败,显示错误信息。
解决方案:
- 检查 JavaScript 语法是否正确
- 检查 JSON 路径是否正确
- 检查断言条件是否合理
- 使用
console.log()输出中间变量值,进行调试
7.4 Mock 服务不返回预期响应
问题: 调用 Mock 服务时,返回的响应不是预期的示例。
解决方案:
- 确保请求 URL、方法和参数与示例匹配
- 检查 Mock 服务是否正确关联了集合
- 检查示例是否正确保存
- 尝试重新创建 Mock 服务
7.5 团队协作问题
问题: 团队成员之间无法共享集合或环境。
解决方案:
- 确保所有团队成员使用相同版本的 Postman
- 创建团队工作空间,邀请团队成员加入
- 设置适当的权限,确保团队成员可以查看和编辑集合
- 使用版本控制工具管理集合的变更
八、总结
Postman 是一款功能强大的 API 开发和测试工具,它提供了友好的用户界面和丰富的功能,可以帮助开发者设计、测试、调试和文档化 API。通过本文的介绍,相信您已经了解了 Postman 的基本使用方法和高级功能,可以在实际工作中灵活运用 Postman 提高 API 开发效率和质量。
Postman 不断更新和迭代,新增了许多实用的功能,如 API 设计、监控、Mock 服务等。建议您定期关注 Postman 的官方文档和更新日志,了解最新的功能和最佳实践。
最后,希望本文能够帮助您更好地使用 Postman,提升 API 开发和测试的效率和质量!
