apifox 生成签名

前言

准备

编写签名脚本

签名说明

  • appId=1xxxxxxxxxxxxx4。常量
  • appSecret=Exxxxxxxxxxxxxxxxxm。常量
  • date=当前日期,日期格式为yyyy-MM-dd。例: 2024-04-21
  • bizId=业务单据ID。例:1xxxxxxxxxxxxxxx3
  • signStr = appId+bizId+date+secretKey
  • sign=MD5(signStr)
  • 将签名(sigh)通过form data传递,参数名sign

mysql实现示例:

select md5(concat('1xxxxxxxxxxxxx4','1xxxxxxxxxxxxxxx3','2024-04-21','Exxxxxxxxxxxxxxxxxm')); 

捋清思路

  1. 获取签名所需的参数
  2. 生成签名
  3. 将签名放到合适的位置

编码

获取签名所需的参数

/* 获取签名所需参数 */
let appId = ""; /*从环境变量中获取*/
let appSecret = ""; /*从环境变量中获取*/
let date = moment().format("YYYY-MM-DD");/*当前日期,自动生成*/
let bizId = "" /*从header中获取*/

/* 部分签名所需参数在环境变量中,从环境变量中获取 */
appId = pm.environment.get('appId');
appSecret = pm.environment.get('appSecret');

/* 部分签名所需参数在header中,从header中获取 */
var headers = pm.request.headers;
if (headers) {
  bizId = headers.get("bizId");
}

生成签名

/* 打印签名所需参数 */
console.log("打印签名所需参数:");
console.log("appId is : " + appId);
console.log("bizId is : " + bizId);
console.log("date is : " + date);
console.log("appSecret is : " + appSecret);

console.log("开始签名:");
let signParam = []
signParam.push(appId)
signParam.push(bizId)
signParam.push(date)
signParam.push(appSecret)

let signStr = signParam.join('')
console.log("signStr is : " + signStr);

let sign = CryptoJS.MD5(signStr).toString().toUpperCase()
console.log("sign is : " + sign);

将签名放到合适的位置

将签名添加到formdata中:

let formData = pm.request.body.formdata;
let newForData = [];
formData.each((item) => {
  newForData.push({
    key: item.key,
    value: item.value
  });
});
newForData.push({
    key: 'sign',
    value: sign
  });
pm.request.body.update({
    mode: 'formdata',
    formdata: newForData
});

完整代码

/*导入JS 类库*/
var moment = require('moment');

/* 获取签名所需参数 */
let appId = ""; /*从环境变量中获取*/
let appSecret = ""; /*从环境变量中获取*/
let date = moment().format("YYYY-MM-DD");/*当前日期,自动生成*/
let bizId = "" /*从header中获取*/

/* 部分签名所需参数在环境变量中,从环境变量中获取 */
appId = pm.environment.get('appId');
appSecret = pm.environment.get('appSecret');

/* 部分签名所需参数在header中,从header中获取 */
var headers = pm.request.headers;
if (headers) {
  bizId = headers.get("bizId");
}

/* 打印签名所需参数 */
console.log("打印签名所需参数:");
console.log("appId is : " + appId);
console.log("bizId is : " + bizId);
console.log("date is : " + date);
console.log("appSecret is : " + appSecret);

console.log("开始签名:");
let signParam = []
signParam.push(appId)
signParam.push(bizId)
signParam.push(date)
signParam.push(appSecret)

let signStr = signParam.join('')
console.log("signStr is : " + signStr);

let sign = CryptoJS.MD5(signStr).toString().toUpperCase()
console.log("sign is : " + sign);

/* 将签名添加到formData */
let formData = pm.request.body.formdata;
let newForData = [];
formData.each((item) => {
  newForData.push({
    key: item.key,
    value: item.value
  });
});
newForData.push({
    key: 'sign',
    value: sign
  });
pm.request.body.update({
    mode: 'formdata',
    formdata: newForData
});

在apifox中配置脚本

新增公共脚本

参考这里
在这里插入图片描述

引用公共脚本

参考这里
在这里插入图片描述

添加环境变量

参考这里
在这里插入图片描述

参考

https://apifox.com/help/best-practices/how-to-handle-api-signature
https://apifox.com/help/pre-post-processors-and-scripts/scripts/examples/handling-request
https://apifox.com/help/pre-post-processors-and-scripts/scripts/api-references/javascript-library
https://apifox.com/help/pre-post-processors-and-scripts/scripts/public-scripts#引用公共脚本
http://momentjs.com/
http://momentjs.cn/

相关推荐

  1. http请求签名生成算法

    2024-06-09 07:06:03       34 阅读
  2. Mac 生成Android签名证书 .keystore文件

    2024-06-09 07:06:03       42 阅读
  3. open ssl 生成签名证书

    2024-06-09 07:06:03       30 阅读
  4. 使用openssl生成签名证书

    2024-06-09 07:06:03       9 阅读

最近更新

  1. 大数据开发语言Scala(一) - Scala入门

    2024-06-09 07:06:03       0 阅读
  2. C# 事件(Event)定义及其使用

    2024-06-09 07:06:03       0 阅读
  3. 一文搞懂OPC质量码

    2024-06-09 07:06:03       0 阅读
  4. MySQL(7)

    2024-06-09 07:06:03       0 阅读
  5. 1606 - 求一个两位数倒序的结果

    2024-06-09 07:06:03       0 阅读
  6. LeetCode 2848. Points That Intersect With Cars

    2024-06-09 07:06:03       1 阅读

热门阅读

  1. Qt富文本查找

    2024-06-09 07:06:03       3 阅读
  2. KerasCV和KerasNLP:视觉和语言的增强

    2024-06-09 07:06:03       3 阅读
  3. 学习分享-声明式的 HTTP 客户端OpenFeign

    2024-06-09 07:06:03       4 阅读
  4. 程序员搞副业一些会用到的工具

    2024-06-09 07:06:03       5 阅读
  5. CSS基础

    2024-06-09 07:06:03       4 阅读
  6. vue3路由传参

    2024-06-09 07:06:03       4 阅读
  7. 虚拟存储器概述

    2024-06-09 07:06:03       5 阅读
  8. 除留取余法构造散列表--c++【做题记录】

    2024-06-09 07:06:03       4 阅读
  9. 从0~1开发财务软件

    2024-06-09 07:06:03       4 阅读