Appearance
Postman 变量与脚本进阶
Postman 不仅仅是一个请求发送工具,它还内置了强大的 JavaScript 引擎,允许在请求前后执行脚本,实现参数化、动态签名和自动化测试。
一、 变量系统 (Variables)
Postman 的变量系统允许我们在不同请求间重用值,避免硬编码。
1.1 变量作用域
Postman 变量优先级从低到高:
- Global (全局变量): 在整个 Workspace 有效。
- Collection (集合变量): 仅在当前 Collection 有效。
- Environment (环境变量): 依赖于当前选择的 Environment(如 Dev/Prod),最常用。
- Local (局部变量): 仅在当前请求或脚本运行期间有效。
- Data (数据变量): 在 Runner 运行时从 CSV/JSON 文件读取。
1.2 设置与使用变量
设置变量:
UI 方式:点击右上角 "眼睛" 图标 -> Edit globals/environment。
脚本方式:
```javascript pm.globals.set("variable_key", "variable_value"); pm.environment.set("variable_key", "variable_value"); ```
使用变量:
在 URL/Headers/Body 中:使用双大括号
。在脚本中:
```javascript pm.environment.get("variable_key"); ```
1.3 内置动态变量
Postman 提供了一些开箱即用的动态变量,用于生成随机数据:
: 生成 UUID: 当前时间戳: 0-1000 随机整数
二、 Pre-request Script (预请求脚本)
Pre-request Script 在请求发送 之前 执行。常用于:
- 生成时间戳或随机数。
- 计算接口签名 (Sign)。
- 动态设置 Header (如 Token)。
2.1 常用脚本示例
示例 1:设置时间戳
javascript
// 获取当前时间戳
var timestamp = Math.round(new Date().getTime());
// 存入全局变量
pm.globals.set("timestamp", timestamp);使用方式:在请求参数中填入 。
示例 2:生成加密签名 (Advanced)
假设接口需要 Authorization 头,格式为 Basic Base64(appid:sha256(token+date))。
javascript
var CryptoJS = require('crypto-js');
// 1. 获取请求体长度
if (pm.request.body) {
console.log("请求体长度:" + pm.request.body.toString().length);
}
// 2. 生成 GMT 时间
var date = new Date().toUTCString();
pm.environment.set('date', date);
// 3. 计算签名
var appid = "12521111104";
var encryptToken = "your_token_here";
var message = encryptToken + date;
var auth256 = CryptoJS.SHA256(message); // SHA256 加密
var appidAuth = appid + ":" + auth256;
// 4. Base64 编码
var appidAuthStr = CryptoJS.enc.Utf8.parse(appidAuth);
var base64sha256 = CryptoJS.enc.Base64.stringify(appidAuthStr);
// 5. 设置环境变量 Authorization
pm.environment.set("Authorization", "Basic " + base64sha256);
console.log("Generated Auth: Basic " + base64sha256);2.2 调试技巧
- 使用
console.log()输出调试信息。 - 通过菜单 View -> Show Postman Console (快捷键
Ctrl+Alt+C) 查看日志。

