Postman前置脚本使用案例

ops/2024/12/21 9:42:48/

背景

由于我们的服务接口需要进行验签,每次通过Postman手动调用接口时都显得颇为繁琐。为了简化这一过程,我们可以充分利用Postman提供的脚本功能,自动为接口请求生成所需的签名。

案例

在Scripts中写生成接口签名的脚本。

以下是一个实用的脚本示例,展示了如何在Postman的Scripts中编写代码以生成接口签名:

script">// 设定你的签名密钥
let signSecret = 'your_sign_secret';// 初始化一个空对象,用于存放待签名的参数
let param = {};// 从请求体中解析出JSON参数
let jsonData = JSON.parse(pm.request.body.raw);
console.log(jsonData);// 调用自定义函数,根据参数生成待签名的字符串
let stringSignTemp = genSignStr(jsonData);// 获取当前的时间戳(毫秒级)
let timestamp = Date.now();
console.log(stringSignTemp);// 将时间戳和签名密钥拼接到待签名字符串的末尾
stringSignTemp += timestamp + signSecret;
console.log(stringSignTemp);// 使用CryptoJS库计算MD5签名
// 注意:确保CryptoJS库已在Postman环境中引入
let sign = CryptoJS.MD5(stringSignTemp).toString();
console.log(sign);try {// 将生成的签名和时间戳添加到HTTP请求的头部pm.request.headers.add({ key: "api-sign", value: sign });pm.request.headers.add({ key: "api-timestamp", value: timestamp.toString() });console.log('签名和时间戳已成功添加到请求头:');console.log(jsonData); // 在控制台打印完整的JSON数据以供调试
} catch (e) {// 捕获并打印任何可能发生的错误console.log(e);
}// 自定义函数:根据对象参数生成待签名的字符串
function genSignStr(objectMap) {// 此处应实现具体的签名参数拼接逻辑// 例如,将对象参数按键名排序,然后拼接成"key1=value1&key2=value2"的格式let resultString = "";// ...(签名参数拼接逻辑的实现)return resultString;
}

Tips:

  • 如果你正在处理一个包含多个接口的项目,并且这些接口都需要使用相同的签名逻辑,那么你可以在Postman的项目文件夹中统一配置这个脚本,以便所有接口都能共享这一功能。

pm对象API参考: 

  pm.request

  request 是接口请求对象。在前置脚本中表示将要发送的请求,在后置脚本中表示已经发送了的请求

  request 包含了以下结构:

  • pm.request.url:Url: 当前请求的 URL。

  • pm.request.getBaseUrl():获取当前运行环境选择的的 前置 URL,在 2.1.39 版本之后支持。

  • pm.request.headers:HeaderList:当前请求的 headers 列表。

  • pm.request.method:String 当前请求的方法,如GETPOST等。

  • pm.request.body:RequestBody: 当前请求的 body 体。

  • pm.request.headers.add({ key: headerName:String, value: headerValue:String}):function: 给当前请求添加一个 key 为headerName的 header。

  • pm.request.headers.remove(headerName:String):function: 删除当前请求里 key 为headerName的 header

  • pm.request.headers.get(headerName:String):function: 查询当前请求里的 headerName

  • pm.request.headers.upsert({ key: headerName:String, value: headerValue:String}):function: upsert key 为headerName的 header(如不存在则新增,如已存在则修改)。

  • pm.request.auth: 当前请求的身份验证信息

通过上述脚本,你可以轻松地在Postman中自动为接口请求生成签名,从而大大提高接口调用的效率和便捷性。


http://www.ppmy.cn/ops/143720.html

相关文章

Spark-Streaming receiver模式源码解析

一、上下文 《Spark-Streaming初识》博客中我们用NetworkWordCount例子大致了解了Spark-Streaming receiver模式的运行。下面我们就通过该代码进行源码分析,深入了解其原理。 二、构建StreamingContext 它是Spark Streaming功能的主要入口点。并提供了从各种输入…

Day28 C++ 命名空间

2024.12.20 C 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况…

【Spring】Spring的模块架构与生态圈—数据访问与集成(JDBC、ORM、Transactions)

在企业级应用中,数据的存储和访问是核心功能之一。Java开发语言通过Spring框架提供了多种方式来实现数据访问和集成,包括JDBC(Java Database Connectivity)、ORM(对象关系映射)以及事务管理。这些技术的有效…

出现 java.io.UncheckedIOException: Cannot delete Local\Temp\tomcat xxx.tmp 文件无法删除

目录 1. 问题所示2. 原理分析3. 解决方法3.1 kill(初审)3.2 代码Bug(严查)3.3 核心Bug(严查)3.4 版本(暂定)1. 问题所示 执行代码的时候,出现如下问题: java.io.UncheckedIOException: Cannot delete C:\Users\lixiaosong\AppData\Local\Temp\tomcat.48080.1595710…

Spring Boot应用关闭分析

优质博文:IT-BLOG-CN 一、使用spring容器的close方法关闭。 可通过在代码中获取SpringContext并调用close方法去关闭容器。 使用SpringApplication的exit方法。 public static int exit(ApplicationContext context,ExitCodeGenerator... exitCodeGenerators) {…

Serverless监控和调试、持续集成和持续部署

接下来,我们将探讨Serverless架构中的监控和调试,以及如何在Serverless环境中实现持续集成和持续部署(CI/CD)。 在Serverless架构中,监控和调试是确保应用健康运行的关键。以下是一些监控和调试的最佳实践: 日志聚合:使用云服务提供商的日志服务(如AWS CloudWatch、Azu…

LCD1602显示模块详解

LCD1602( Liquid Crystal Display 1602),一种常见的字符型液晶显示模块。虽然它接线多,但是LCD1602是每个嵌入式工程师的必经之路。它能够显示16列2行,共32个字符字符,每个字符都由5x8像素点阵构成&#xf…

百货中心供应链管理系统【源码+文档】

目录 1引言 1 1.1课题背景 1 1.2目的和意义 2 1.3研究内容和组织结构 2 2开发工具及技术 3 2.1开发工具 3 2.2使用技术 4 3可行性分析 6 3.1法律的可行性 6 3.2经济的可行性 6 3.3技术的可行性 6 4需求分析 7 4.1系统功能分析 7 4.1.1经理用例图 7 4.1.2人事部员工用例图 7 4.1…