惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
博客园 - 叶小钗
The Cloudflare Blog
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
小众软件
小众软件
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
宝玉的分享
宝玉的分享

博客园 - _herbert

小程序拍证件并局部裁剪 信创-为什么ORACLE使用JDBC查询SYSDATE时,RS.getDate能获取到时间部分? linux宝塔面板使用API自动部署更新文件 JSON JAVA找出哪个类import了不存在的类 LocalDate,LocalDateTime,Date,日期串相互转换 PostMan内置对象 微信支付集成_JSAPI VUE中使用AXIOS包装API代理 spring中el表达式安全和扩展 Spring使用el表达式 springboot中File默认路径 Springboot启动时记录进程ID ORACLE解析游标生成JSON ORACLE游标序列化 AI教我一条SQL实现明细转树形结构 Springboot构建包使用BOOT-INF中的class覆盖依赖包中的class Maven 构建知识库 MAVEN构建分离依赖JAR JAVA实现读取最后几行日志 信创-ORACLE迁移到KingbaseV9 信创-ORACLE迁移到DM8 sql分组 group by rollup,cube,grouping sets,group_id,groupingId
PostMan加载三方JS
_herbert · 2025-12-31 · via 博客园 - _herbert

PostMan加载三方JS

1. 背景

在Postman中做接口测试时,需要使用第三方js包或者自己封装的js工具处理接口参数.此时需要在执行脚本前加载外部js文件
,并且注入运行环境.目前动态执行js文件,可以使用eval或者使用 new Function()方式加载.这里优先考虑第二种方式.
以下介绍四种方法

  • 通过集合参数或者环境变量添加
  • 通过请求响应添加
  • 直接在脚本中添加
  • 通过pm.require添加npm包

动态添加的脚本如果不能访问注入的对象,可以在调用前添加this.xxx试下.

以下测试代码,均在Pre-request Script页签中执行

测试方式为在在Postman中添加一个GET请求

请求地址为https://www.小游戏.地心侠士.com

虽然地址不存在,但是依然可以测试脚本加载情况.

2. 通过参数添加

(function(){
var script = pm.collectionVariables.get("dayjs_code");
(new Function(script))();
console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS')) 
})()  

在左下角的Console面板中输出的内容如下:

加载dayjs后,获取当前时间: 2025-12-30 19:14:14 949
GET https://www.小游戏.地心侠士.com

3. 通过网络添加

pm.sendRequest("https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.18/dayjs.min.js",(error,resp)=>{
   let script = resp.text();
   (new Function(script))()
   console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))    
})

在左下角的Console面板中输出的内容如下:

GET https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.18/dayjs.min.js

加载dayjs后,获取当前时间: 2025-12-30 19:05:09 506

GET https://www.小游戏.地心侠士.com

4. 使用eval方式加载

以上的示列,都是是通过Function()方式加载.使用eval方式,参考如下

(function(){
var script = pm.collectionVariables.get("dayjs_code");
eval(script)
console.log("使用eval初始脚本,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS')) 
})()

在左下角的Console面板中输出的内容如下:

使用eval初始脚本,获取当前时间: 2025-12-31 09:26:56 460
GET https://www.小游戏.地心侠士.com

5. 直接复制到脚本中

直接下载dayjs.min.js文件,复制到Pre-request Script内容区域.然后再写具体测试脚本

这里需要注意的是,在调用是需要使用this.dayjs(),不能直接使用dayjs(),可能和postman执行环境没有window对象有关

console.log("加载dayjs后,获取当前时间: "+this.dayjs().format('YYYY-MM-DD HH:mm:ss SSS')) 

在左下角的Console面板中输出的内容如下:

加载dayjs后,获取当前时间: 2025-12-30 19:21:46 064
GET https://www.小游戏.地心侠士.com

6. 使用pm.require添加npm包

在高级版本中,或者直接在官网云环境可以是使用

const dayjs = pm.require('npm:dayjs@1.11.19');
console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))

在左下角的Console面板中输出的内容如下:

加载dayjs后,获取当前时间: 2025-12-30 19:33:07 825
GET https://www.小游戏.地心侠士.com

7. 总结及扩展

总之,在postman的沙箱环境中,加载三方JS主要是两个路径

  • 中JS动态执行能力,使用eval(scriptContent)new Function(scriptContent)
  • 使用Postman内置的包管理能力 pm.require('npm:dayjs@1.11.19'); 可能会有版本要求

内置Web Crypto objects对象,比如Crypto CryptoKey SubtleCrypto crypto property

比如,在Postman脚本中,需要实现AES加密代码如下:

var ciphertext = CryptoJS.AES.encrypt('小游戏地心侠士', '微信').toString();
console.log("AES加密内容 "+ ciphertext)

在左下角的Console面板中输出的内容如下:

AES加密内容  U2FsdGVkX1/N/cvcwUkO1F+V66VM/XFfkBnAJUPk20TpE5Db2+H+lSa2xOx1yAeI
GET https://www.小游戏.地心侠士.com

PostMan内置对象参考地址如下:
https://www.cnblogs.com/yfrs/p/19425003/postman_inner_object

原文地址:https://mp.weixin.qq.com/s/EO5lJEskAWGq1DotIVx6Ig