postman pre-request script 替换url变量

本文介绍在Postman中如何正确地在预请求脚本中使用变量,以实现动态URL的生成。通过引用GitHub上的代码片段,展示了如何利用正则表达式进行变量的匹配与替换,确保请求参数中的变量能被其实际值所替代。

原文地址:http://www.nanstar.top/p/wiki_1576118926436

场景

在添加验签字段时,需要在pre-request script中执行。如果请求参数中包含变量,如 ?userid={{userid}} 在pre-request script中获取url时仍然是userid={{userid}}的形式,并没有使用实际值替换掉。

期望

变量应该被替换,如 ?userid=123456

解决方法

没有找到具体方法,github上也没有现成的代码,有人推荐使用正则替换,先记下正则的用法,以后备用。

var regex1 = RegExp('foo*','g');
var str1 = 'table football, foosball';
var array1;

while ((array1 = regex1.exec(str1)) !== null) { 
  console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
  // expected output: "Found foo. Next starts at 9."
  // expected output: "Found foo. Next starts at 19."
}

更新 20191213

找到了一个有类似功能的代码:https://gitee.com/qingtianbuluoye/Postman-encryption
该代码的encryption.js 中有替换变量的方法。不过代码好长啊!!

原文地址:http://www.nanstar.top/p/wiki_1576118926436

1、PostMan接口参数化操作步骤; 2、环境变量设置步骤; 3、A接口返回例如token赋给B接口请求参数操作步骤; 图文并茂 1 接口参数化 第一步:点击右上角图标,打开环境配置页面,选择Globals,设置全局变量; 第二步:添加变量名称,设置对应的变量,保存; 第三步:接口地址或者需要取的参数value设置;注意需要取的设置为{{变量名}},双大括号,即可取全局变量设置的。 TIPS: 如果需要批量修改接口参数等,可导出后编辑,批量替换,再导入即可,注意需要修改接口地址以及下方的参数取。 2 接口返回存入环境变量 第一步:查看接口返回; { "data": { "leaguerId": "161", "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNjEiLCJjcmVhdGVkIjoxNTI5NTcyNTkzMTI5LCJleHAiOjE1Mjk1Nzk3OTN9.U6qmR-Qa9sJpwxShLOC8WLPBlhLxWWiQTv5bZtyOV0mdyCSHnFBb_p6T5PBY20m_0m2AmrQZGfrv6hvHCPAaow" }, "status": 200 } 第二步:在接口的TESTS页签中输入以下内容(视返回情况修改): pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 把responseBody转为json字符串 var Jsondata = JSON.parse(responseBody); // 设置环境变量access-token,供后面的接口引用 pm.environment.set("access-token ", Jsondata.data.token ); 第三步:重新发送上一个接口的参数信息测试,执行后查看环境变量;如图,则表示环境变量已经正常存储; 3 参数化取其他接口的返回 第一步:修改需要引用上述token的接口参数取,参数value设置为{{access-token}}({{变量名}}),测试接口,正确返回即可;
### Postman Pre-request Script 中生成随机数和时间戳(毫秒级)的示例代码PostmanPre-request Script 中,可以通过 JavaScript 编写脚本来生成随机数和时间戳。以下是一个完整的示例代码,用于生成随机数和毫秒级时间戳,并将它们存储为环境变量或全局变量以供后续请求使用[^1]。 ```javascript // 生成随机数 (范围: min 到 max) function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // 生成当前时间的时间戳(毫秒级) function getTimestampInMilliseconds() { return new Date().getTime(); } // 调用函数并存储结果到环境变量中 pm.environment.set("randomNumber", getRandomNumber(1000, 9999)); // 随机数范围:1000 到 9999 pm.environment.set("timestamp", getTimestampInMilliseconds()); // 当前时间戳(毫秒级) // 或者存储到全局变量中(如果需要跨多个集合共享数据) pm.globals.set("globalRandomNumber", getRandomNumber(1000, 9999)); pm.globals.set("globalTimestamp", getTimestampInMilliseconds()); ``` 上述代码定义了两个函数:`getRandomNumber` 用于生成指定范围内的随机数,`getTimestampInMilliseconds` 用于生成当前时间的毫秒级时间戳。生成的结果被存储为环境变量或全局变量,以便在后续请求中引用这些[^2]。 ### 使用说明 - 环境变量 `randomNumber` 和 `timestamp` 可以通过 `{{randomNumber}}` 和 `{{timestamp}}` 在其他请求中引用。 - 全局变量 `globalRandomNumber` 和 `globalTimestamp` 可以通过 `{{globalRandomNumber}}` 和 `{{globalTimestamp}}` 在整个 Postman 工作区中引用。 ### 注意事项 - 确保在生产环境中测试生成的随机数和时间戳是否符合预期需求。 - 如果需要更复杂的随机数生成逻辑(例如基于 UUID 或其他算法),可以扩展脚本功能[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值