postman 调用接口设置全局变量

在 Postman 中设置全局变量(Global Variables) 可以实现变量在整个 Postman 工作空间(所有集合、请求、环境) 的复用,常用于存储固定值(如基础 URL、API 密钥)或动态值(如登录后的 Token)。以下是详细的设置方法和使用场景:

一、全局变量的核心作用

  • 跨集合 / 请求复用 :无需在每个请求中重复输入相同值(如baseUrlappKey)。
  • 动态传递数据:从一个请求的响应中提取值(如 Token),供后续所有请求使用。
  • 简化维护:修改全局变量后,所有引用该变量的请求会自动生效,无需逐个修改。

二、4 种常用的全局变量设置方法

方法 1:手动设置(适合固定值,如基础 URL)

适用于存储不会频繁变化的值(如baseUrl = https://api.example.com),步骤如下:

  1. 打开 Postman,点击左上角的 "环境和全局变量" 图标 (🔄 形状,位于 "发送" 按钮左侧),或通过顶部菜单 "设置"→"全局变量" 进入面板。
  2. 在 "全局变量" 面板中,点击 "添加" 按钮,输入变量的:
    • Key :变量名(如baseUrlapiKey,建议用英文 + 驼峰命名)。
    • Initial Value:初始值(会同步到 Postman 云端 / 团队共享,适合公开值)。
    • Current Value :当前值(仅本地生效,适合敏感值如tokenpassword)。
  3. 点击 "保存"(💾 图标),全局变量立即生效。

示例:设置baseUrl = https://api.example.com,后续所有请求的 URL 可直接写为{``{baseUrl}}/user/login

方法 2:通过 Pre-request Script 设置(请求发送前动态生成)

适用于需要在请求发送前动态生成变量的场景(如生成时间戳、随机数、签名),脚本会在请求发送前执行。

  1. 打开任意请求,切换到 "Pre-request Script" 标签页(请求参数下方)。

  2. 输入 JavaScript 脚本,使用pm.globals.set("变量名", "变量值")设置全局变量,示例:

    javascript

    运行

    复制代码
    // 1. 生成当前时间戳(毫秒级),存入全局变量timestamp
    const timestamp = new Date().getTime();
    pm.globals.set("timestamp", timestamp);
    
    // 2. 生成随机字符串,存入全局变量nonce
    const nonce = Math.random().toString(36).substring(2, 10);
    pm.globals.set("nonce", nonce);
    
    // 3. 验证变量是否设置成功(可选,通过控制台查看)
    console.log("全局变量timestamp:", pm.globals.get("timestamp"));
  3. 点击 "发送" 请求,脚本会自动执行并设置全局变量。

  4. 验证:进入 "全局变量" 面板,或通过控制台(底部 "Console" 标签)查看变量值。

方法 3:通过 Tests 脚本设置(从响应中提取值,最常用)

这是最核心的场景 :从一个请求的响应中提取数据(如登录接口返回的token),存入全局变量,供后续所有请求使用(如接口鉴权)。

以 "登录接口提取 Token" 为例,步骤如下:

  1. 发送登录请求(如POST {``{baseUrl}}/user/login),假设响应是 JSON 格式:

    json

    复制代码
    {
      "code": 200,
      "message": "登录成功",
      "data": {
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", // 需要提取的Token
        "userId": 12345
      }
    }
  2. 切换到该请求的 "Tests" 标签页(响应下方),输入脚本提取token并设置为全局变量:

    javascript

    运行

    复制代码
    // 1. 解析响应JSON(前提是响应格式为JSON)
    const responseJson = pm.response.json();
    
    // 2. 提取data.token的值
    const token = responseJson.data.token;
    
    // 3. 将token存入全局变量(关键步骤)
    pm.globals.set("token", token);
    
    // 4. 验证:打印变量值到控制台,或断言变量不为空(可选)
    console.log("全局Token:", pm.globals.get("token"));
    pm.test("Token提取成功", () => {
      pm.expect(token).not.to.be.empty; // 断言Token不为空
    });
  3. 点击 "发送" 登录请求,Tests 脚本会在响应返回后执行,自动将token存入全局变量。

  4. 后续请求使用 Token:在请求头(如Authorization: Bearer {``{token}})或参数中直接引用{``{token}}即可。

方法 4:导入 / 导出全局变量(团队共享)

如果需要将全局变量共享给团队成员,或迁移到其他设备,可以通过导入 / 导出 JSON 文件实现:

  • 导出全局变量

    1. 进入 "全局变量" 面板,点击右上角的 "导出" 按钮(↓ 图标)。
    2. 选择保存路径,生成.postman_globals.json文件(包含所有全局变量的 Key 和 Initial Value)。
  • 导入全局变量

    1. 进入 "全局变量" 面板,点击右上角的 "导入" 按钮(↑ 图标)。
    2. 选择团队共享的.postman_globals.json文件,确认导入后变量立即生效。

三、全局变量的使用方式

设置好全局变量后,在 Postman 的任意位置(URL、请求头、参数、Body)都可以通过 {``{变量名}} 引用,示例:

使用场景 示例写法 说明
URL {``{baseUrl}}/user/{``{userId}} 拼接基础 URL 和用户 ID
请求头 Authorization: Bearer {``{token}} 携带 Token 进行鉴权
路径参数 键:id,值:{``{userId}} 路径参数引用全局变量
JSON 请求体 "phone": "{``{userPhone}}" 请求体中引用全局变量

四、注意事项

  1. 变量作用域优先级 :如果全局变量与环境变量(Environment Variables)同名,环境变量会覆盖全局变量(环境变量作用域更具体)。
  2. 敏感值保护 :敏感信息(如tokenpassword)建议只存放在 Current Value 中(本地生效,不同步到云端),避免泄露。
  3. 调试技巧 :若变量引用失效,可通过以下方式排查:
    • 查看 "全局变量" 面板,确认变量已保存且值正确。
    • 打开底部 "Console",输入pm.globals.get("变量名")打印变量值,检查是否存在。
    • 检查变量引用格式是否正确(必须是{``{变量名}},不能遗漏大括号)。

通过以上方法,你可以灵活地在 Postman 中设置和使用全局变量,大幅提升接口调试效率,尤其是在多请求联动的场景(如 "登录→获取用户信息→修改用户资料")中非常实用。

编辑分享

手动设置全局变量时,如何将全局变量传递给其他请求?

如何在Postman中导入和导出全局变量?

在Pre-request Script中,如何确保生成的变量不会与其他脚本冲突?

相关推荐
嵌入式-老费4 小时前
Easyx图形库应用(用lua开发图形界面)
开发语言·lua
ellis19704 小时前
Lua协程coroutine库用法
开发语言·lua
嵌入式-老费8 小时前
Easyx图形库应用(和lua结合使用)
开发语言·lua
程序员小远10 小时前
软件测试之压力测试详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
大面积秃头12 小时前
postman工具使用前置知识
测试工具·postman
程序员大辉12 小时前
接口调试利器,Postman免安装,免登陆
测试工具·lua·postman
BatyTao12 小时前
Fiddler抓包+Postman实战之--客户关系管理软件自动化测试
fiddler·postman
星哥说事12 小时前
网络监控工具:ping、traceroute、nmap、Wireshark 网络探测与分析
网络·测试工具·wireshark