美文网首页
Postman - 使用pre-request-script动态

Postman - 使用pre-request-script动态

作者: 十毛tenmao | 来源:发表于2021-09-10 17:17 被阅读0次

OpenApi一般都有签名,在对接的时候,不管文档写得多么完善,总是会有人不明白,所以可以提供一个Postman的Collection,里面包含了签名逻辑

整体思路

  • 每个对接方分配一对appKey和appSecret,其中appSecret不能泄露
  • 每个请求需要appKey, timestamp以及signature
  • 根据请求信息(method, url, body) + appSecret生成signature

请求样例

  • 请求URL如下
https://www.tenmao.com/hello/world?app_key={{appKey}}&signtime={{timestamp}}&signature={{signature}}

ps: 因为历史原因,这里的签名信息放在URL里面,其实最好还是放在header

签名Pre-request-Script

let timestamp = new Date().getTime().toString();

//从环境变量读取appKey和appSecret
const appKey = pm.environment.get("appKey")
const appSecret = pm.environment.get("appSecret")
console.log(`基本信息: appKey=${appKey}, appSecret=${appSecret}, timestamp=${timestamp}`)
if (!appKey || !appSecret) {
    //如果不存在就直接抛出异常,这样就会弹出错误信息,同时不会再执行请求
    throw new Error("请先在环境变量中配置appKey和appSecret")
}

//计算签名 - 获取计算签名的数据
var method = request.method;

var canonicalUrl = pm.request.url.getPath();
var data = pm.request.body.raw;
if (!data) {
    data = "";
}

var message = method.toLowerCase() + "\n"
+ encodeURIComponent(canonicalUrl) + "\n"
+ data;

//计算签名 - 第一次摘要(针对时间戳)
var signKey = CryptoJS.HmacSHA1(timestamp, appSecret).toString(CryptoJS.enc.Hex);

console.log("timestamp:" + timestamp + ", appSecret:" + appSecret + ",signKey:" + signKey)

//计算签名 - 第二次摘要(计算最终签名)
var signature = CryptoJS.HmacSHA1(message, signKey).toString(CryptoJS.enc.Hex);
console.log(`签名信息: \nmessage=${message}\nsignKey=${signKey}\nsignature=${signature}`)

//签名信息设置到环境变量
pm.environment.set("timestamp", timestamp)
pm.environment.set("signature", signature)

script中关键点

  • 环境变量: pm.environment.get("appKey"), pm.environment.set("timestamp", timestamp)
  • ES6引入的字符串格式化语法: appKey=${appKey}, appSecret=${appSecret}, timestamp=${timestamp}
  • 异常提醒: throw new Error("请先在环境变量中配置appKey和appSecret")
  • 签名计算: CryptoJS.HmacSHA1(timestamp, appSecret).toString(CryptoJS.enc.Hex)

相关文章

  • Postman - 使用pre-request-script动态

    OpenApi一般都有签名,在对接的时候,不管文档写得多么完善,总是会有人不明白,所以可以提供一个Postman的...

  • postman 动态变量

    postman 动态变量 背景 经常使用postman调试接口的时候都会遇到情况调用应用接口之前需要先调用一个登录...

  • POSTMAN

    POSTMAN简介 POSTMAN安装 POSTMAN使用

  • 使用 Postman 进行接口测试(cookie设置)

    目录:使用 Postman 进行接口测试(入门)使用 Postman 进行接口测试(续) 使用postman模拟接...

  • Postman 使用入门

    Postman Postman Makes API Development Simple. 使用 PostMan ...

  • Postman body传参数组

    如果你已经熟练使用 postman,则直接阅读,对 postman 使用不熟练可以下翻“Postman使用心得” ...

  • Mastering HTTP侧

    Http调试工具Postman使用 Postman Postman测试接口之JSON结构化数据提交 Postman...

  • Postman读取JSON文件和CSV文件

    在使用postman读取文件前我们先看下使用postman批量执行请求集合 Postman批量执行测试集合 选择要...

  • request工具

    使用教程 点击查看使用教程 安装文件 Postman Postman Interceptor good luck ...

  • 教程:录制postman脚本

    postman有两种使用方式: postman安装版 chrome插件版 postman安装版 postman安装...

网友评论

      本文标题:Postman - 使用pre-request-script动态

      本文链接:https://www.haomeiwen.com/subject/tvrnwltx.html