apifox 生成签名

news2024/11/16 1:57:09

目录

  • 前言
  • 准备
  • 编写签名脚本
    • 签名说明
    • 捋清思路
    • 编码
      • 获取签名所需的参数
      • 生成签名
      • 将签名放到合适的位置
      • 完整代码
  • 在apifox中配置脚本
    • 新增公共脚本
    • 引用公共脚本
    • 添加环境变量
  • 参考

前言

准备

  • 查看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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1800476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NineData蔡冬者参与编写墨天轮《2023年中国数据库行业年度分析报告》正式发布!

为明晰发展脉络,把握未来趋势,墨天轮于5月29日正式发布 《2023年中国数据库年度行业分析报告》。该报告由墨天轮联合业界专家学者共同编写,共330页,旨在梳理和洞察中国数据库行业的发展趋势、技术创新、市场动态以及面临的挑战&am…

不讲废话,热门主食冻干鲜朗、希喂、生生不息横向分析

随着科学养宠的普及,主食冻干喂养成为了新的流行趋势。除了知名的“四大金刚”K9、VE、SC、PR外,希喂、鲜朗等新兴品牌也以其营养和高肉含量的特点,获得了消费者的青睐。各大猫粮厂商也看准了这一市场机遇,纷纷推出了自家的主食冻…

【Vue】小兔鲜首页 - 拆分模块组件 - 局部注册

文章目录 一、分析二、局部注册 一、分析 小兔仙组件拆分示意图 开发思路 分析页面,按模块拆分组件,搭架子 (局部或全局注册) 根据设计图,编写组件 html 结构 css 样式 (已准备好) 拆分封装通用小组件 (局部或全局注册),一般这…

万字详解 MySQL MGR 高可用集群搭建

文章目录 1、MGR 前置介绍1.1、什么是 MGR1.2、MGR 优点1.3、MGR 缺点1.4、MGR 适用场景 2、MySQL MGR 搭建流程2.1、环境准备2.2、搭建流程2.2.1、配置系统环境2.2.2、安装 MySQL2.2.3、配置启动 MySQL2.2.4、修改密码、设置主从同步2.2.5、安装 MGR 插件 3、MySQL MGR 故障转…

立创·天空星开发板-GD32F407VE-GPIO

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。 立创天空星开发板-GD32F407VE-GPIO 基础概念三极管MOS管 GPIO输出模式输出线与GPIO输入模式GPIO点灯 基础概念 GPIO,全称为“通用输入/输出”(General Purpose …

nvm,node不是内部命令,npm版本不支持问题(曾经安装过nodejs)

nvm安装后nvm -v有效,node指令无效 环境变量配置无问题 推荐方案 下载你需要的node版本 Index of /dist/ (nodejs.org) 下载后解压到你的nvm存储版本的位置 cmd进入切换你的使用版本(此时你的nodejs是从网上下载的,npm文件是存在的&…

react、vue动态form表单

需求在日常开发中反复写form 是一种低效的开发效率,布局而且还不同这就需要我们对其封装 为了简单明了看懂代码,我这里没有组件,都放在一起,简单抽离相信作为大佬的你,可以自己完成, 一、首先我们做动态f…

谷歌上架防关联,打包环境到底是不是关联因素之一?

在Google play上架应用,防关联是开发者们最关注的问题之一,只要开发者账号被谷歌审核系统与其它违规的开发者账号或应用存在关联,就很有可能被封号。 如果账号被封了,通常谷歌的封号通知邮件里只是写了因为关联或高风险、多次违规…

鸿蒙轻内核M核源码分析系列十七(3) 异常信息ExcInfo

本文中所涉及的源码,以OpenHarmony LiteOS-M内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_m 获取。鸿蒙轻内核异常钩子模块代码主要在components\exchook目录下。 1、异常信息的宏定义、枚举和结构体 在文件components\exch…

NSSCTF-Web题目7

目录 [SWPUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 3、思路 ​编辑 [MoeCTF 2022]baby_file 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 ThinkPHP V5 框架漏洞的利用,命令执行 由于ThinkPHP5在处理控制器传参时&#xff…

RK3588+FPGA+算能BM1684X:高性能AI边缘计算盒子,应用于视频分析、图像视觉等

搭载RK3588(四核 A76四核 A55),CPU主频高达 2.4GHz ,提供1MB L2 Cache 和 3MB L3 ,Cache提供更强的 CPU运算能力,具备6T AI算力,可扩展至38T算力。 产品规格 系统主控CPURK3588,四核…

38页 | 工商银行大数据平台助力全行数字化转型之路(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 工商银行大数据平台 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案&a…

leetcode刷题-栈与队列03

代码随想录栈与队列part02|239. 滑动窗口最大值、347.前 K 个高频元素、总结 239. 滑动窗口最大值347.前 K 个高频元素栈与队列总结 239. 滑动窗口最大值 leetcode题目链接 代码随想录文档讲解 思路: 滑动窗口的移动过程很像一个队列(先进先出&#xff0…

『大模型笔记』Transformer系列技术博文汇总!

Transformer系列技术博文汇总! 文章目录 第1篇:矩阵乘法概念解释第2篇:使用缩放点积方法的自注意力第3篇:深入探讨多头注意力、自注意力和交叉注意力第4篇:Transformer 架构第5篇:PostLN,PreLN…

Linux存储管理

简介 硬件上的存储设备目前有两类,通过磁头读写信息的机械硬盘和用主控芯片将信息写入晶体管的固态硬盘,硬盘调度算法等知识可以通过前面的操作系统设备管理文章学习,本章只介绍Linux中能对存储设备的操作。 为了让操作系统识别和管理物理磁…

企业差旅费管理如何实现真正的降本增效

看企业发展,不能只看当下,尤其对于看重长期价值的企业家来说,必须要用更长远的目光去看行业的未来。开源节流,扔掉一些没用的包袱减少负担,然后轻装上阵,并寻找企业发展的新增长点,仍然是众多企…

探索未来制造,BFT Robotics引领潮流

“买机器人,上BFT” 在这个快速变化的时代,创新和效率是企业发展的关键。BFT Robotics,作为您值得信赖的合作伙伴,专注于为您提供一站式的机器人采购和自动化解决方案。 产品系列: 协作机器人:安全、灵活、…

Vue3_对接腾讯云COS_大文件分片上传和下载

目录 一、腾讯云后台配置 二、安装SDK 1.script 引入方式 2.webpack 引入方式 三、文件上传 1.new COS 实例 2.上传文件 四、文件下载 腾讯云官方文档: 腾讯云官方文档https://cloud.tencent.com/document/product/436/11459 一、腾讯云后台配置 1.登录 对…

【外汇天眼】选择外汇EA的关键:策略适配、风险控制与稳定性评估

外汇EA(Expert Advisor)是外汇交易市场中广泛使用的自动化交易系统。它们通过预定义的规则和算法自动执行交易,旨在为交易者提供便捷的交易体验,同时提高交易效率和准确性。本文将从策略选择、风险控制和稳定性评估三个方面&#…

OKP绩效管理系统:助力企业实现卓越绩效

在当今竞争激烈的商业环境中,绩效管理系统成为企业提升效率和竞争力的重要工具。搭贝OKP绩效管理系统通过其强大的功能模块,帮助企业全面优化绩效管理流程,提升员工工作效率和企业整体绩效。本文将详细介绍搭贝OKP绩效管理系统的核心功能模块…