Skip to content

全局变量与环境变量

字数
1633 字
阅读时间
7 分钟

一、概念

  • 全局变量:全局变量是全局唯一的,不可重复定义的变量
  • 环境变量:
    • 一个变量只能属于某个环境,在某个环境中变量不可重复定义
    • 在环境与环境之间可以定义重复的字符串
    • 一个环境可以包含多个环境变量
    • 常见环境分类:开发环境、测试环境、生产环境

二、设置变量

  • 全局变量:
    • 代码设置:pm.globals.set("var_name", value);
      • var_name是变量名,value是变量值
  • 环境变量:
    • 代码设置:pm.environment.set("var_name", value);

三、获取变量值

  • 全局变量:
    • 方法1:请求参数(Postman界面中)中获取:
    • 方法2:代码中获取:var value = pm.globals.get("var_name");
  • 环境变量:
    • 方法1:请求参数中获取:
    • 方法2:代码中获取:var value = pm.environment.get("var_name");

四、用途 --> postman请求前置脚本 与 postman关联

1. postman请求前置脚本

若实现了请求前置脚本,则在postman界面将请求方法发送到postman内部后,会先执行请求前置脚本,再分析http请求方法、URL等http请求信息
1)工作原理
  • 原理图:
  • 文字解析:请求传入postman内部后,请求前置脚本会被优先执行,随后再分析http请求(该请求包含前置脚本设置的变量),随后发送给服务器
2)案例 --> 时间戳
  • 定义:对应绝对时间 --> 从 1970年1月1日00:00:00到现在 所经历的秒数
JavaScript
// 获取时间戳
var timestamp = new Date().getTime()

// 将时间戳设置到全局变量
pm.globals.set("glb_timestamp"timestamp)
  • 案例:调用百度首页接口,将时间戳穿给服务器
  1. 编写请求前置脚本,获取时间戳并设置全局变量649
    • 请求前置脚本编写完成后进行第三步即可,这里点击发送时间戳只是为了让初学者认识到全局变量的存在
  2. 查看全局变量649
  3. 获取全局变量
  4. 发送变量后,打开postman控制台查看是否成功将变量发送给目标服务器351

2. 🌟postman关联 --> 常用于多个http请求间的数据关联/依赖关系

该功能非常常用,务必重视

  • 功能说明:存在A接口与B接口,A接口 依赖 B接口的数据,则应作如下步骤的动作以满足需求:
    1. 向B接口发送http请求,获取数据
    2. 将数据设置到全局变量(环境变量)中
    3. A接口 获取全局变量(环境变量)中的数据值,并进行使用
案例1
请求 获取天气接口,提取响应结果中的城市,将城市名 给百度搜索接口使用
  1. 获取天气接口,提取响应中的城市名信息605
  2. 获取全局变量glb_city,将城市名传入百度的搜索接口,成功实现搜索功能617
案例2
  • 背景:员工管理模块中,每个账户都有一个专属令牌,每次进行增加员工、删除员工、修改员工、查询员工都必须传入令牌(token)
  • 系统分析:
    1. 登录成功,返回的“令牌”,被 添加、查询、修改、删除 员工接口依赖
    2. 添加 成功,返回的“员工id”,被 查询、修改、删除 员工接口依赖
  • 依赖1: --> 提取令牌:
    1. 发送http请求,在响应体中得到data值(登录成功后返回的"data"中就包含了令牌信息)
    2. 将data值与 拼接,组成一个合法令牌
    3. 将拼接后的令牌设置到环境变量中(在Tests中通过代码写入)
JavaScript
// 拼接 data的值,添加 Bearer 和 空格。组成合法令牌
// 获取 响应体,保存在 jsonData变量中。
var jsonData = pm.response.json()

// 提取 data的值。保存在 tmp_token 中。
var tmp_token = jsonData.data

// 拼接 Bearer 和 空格 到 data值的前面。 "Bearer" + " " + tmp_token
pm.environment.set("env_token", "Bearer"+" "+tmp_token)

五、环境变量设置

  • 步骤图:
    • 图示是在图形化界面设置环境变量。若想使用代码设置环境变量,或使用环境变量中的值,需要先在右上角选择指定环境,才能设置或获取该环境中的环境变量

六、路径参数

  • 图示案例:
对比维度路径参数 (Path Parameter)查询参数 (Query Parameter)
URL 位置路径段中 /users/123? 之后 /users?id=123
协议标准HTTP URL 路径标准(RFC 3986)HTTP URL 查询字符串标准(RFC 3986)
🌟框架模板语法(Postman中Params填写){id}(FastAPI)、:id(Express)等无特殊模板语法,直接按 ?key=value 解析
是否必填通常必填,缺失会导致 404通常可选,缺失有默认值或忽略
参数数量一般 1-3 个,过多影响可读性可多个,用 & 拼接无严格限制
顺序要求固定位置,顺序影响路由匹配无序?a=1&b=2?b=2&a=1 等价
主要用途定位唯一资源(ID、名称)筛选/过滤/排序/分页/搜索
RESTful 语义强,体现资源层级关系弱,附加操作条件
缓存影响不同路径视为不同资源,独立缓存同一路径不同参数,缓存策略需额外配置
示例/orders/10086 /users/123/posts/456?status=paid&page=1&sort=desc
FastAPI 写法@app.get("/users/{user_id}")@app.get("/users") + 函数参数 age: int = None
Express 写法app.get("/users/:id")app.get("/users") + req.query.age
安全性注意避免暴露敏感 ID(如自增主键)注意参数校验,防止 SQL 注入/越权
典型场景获取指定用户、订单、文章详情列表搜索、分页、过滤、排序

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写