apifox 生成签名

目录

  • 前言
  • 准备
  • 编写签名脚本
    • 签名说明
    • 捋清思路
    • 编码
      • 获取签名所需的参数
      • 生成签名
      • 将签名放到合适的位置
      • 完整代码
  • 在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.rhkb.cn/news/344710.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【遗传算法】【机器学习】【Python】常见交叉方法(二)、多点交叉和均匀交叉

往期遗传算法文章见: 【遗传算法】【机器学习】【Python】常见交叉方法(一)、单点交叉和两点交叉 一、遗传算法流程图 交叉过程即存在于上图的”交叉“(crossover)步骤中。 二、多点交叉 多点交叉的原理就是&#x…

腾讯云centos上安装docker

下面的操作是在root用户下操作的,如果非root用户在命令行前加上sudo 1. 系统及内核查看 操作系统:64位的CentOS 7或更新版本。内核版本:最低要求是3.10,推荐使用3.10或更高版本。 #查看内核版本 (base) [klfwjfweaVM-0-6-centos ~]$ uname…

ARM服务器在云手机中可以提供哪些支持

ARM服务器作为云手机的底层支撑,在很多社媒APP或者电商APP平台都有着很多看不见的功劳,可以说ARM扮演着至关重要的底层支持角色; 首先,ARM 服务器为云手机提供了强大的计算能力基础。云手机需要处理大量的数据和复杂的运算&#x…

uniapp自定义的下面导航

uniapp自定义的下面导航 看看效果图片吧 文章目录 uniapp自定义的下面导航 看看效果图片吧 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6aa0e964741d4dd3a58f4e86c4bf3247.png) 前言一、写组件、我这里就没有写组件了直接写了一个页面?总结 前言 在…

一文掌握Vue3:深度解读Vue3新特性、Vue2与Vue3核心差异以及Vue2到Vue3转型迭代迁移重点梳理与实战

每次技术革新均推动着应用性能与开发体验的提升。Vue3 的迭代进步体现在性能优化、API重构与增强型TypeScript支持等方面,从而实现更高效开发、更优运行表现,促使升级成为保持竞争力与跟进现代前端趋势的必然选择。本文深度解读Vue3 响应式数据data、生命…

Java Web学习笔记27——对话框、表单组件

常见组件对话框: Dialog对话框:在保留当前页面状态下,告知用户并承载相关操作。 dialogTableVisible: false 默认是不可见的。 在按钮属性中设置为true的意思,点击按钮的时候,才会true,对话框才会显示。 …

idm2024最新完美破解版免费下载 idm绿色直装版注册机免费分享 idm永久激活码工具

IDM 2024破解版重新开发了调度程序和MMS协议支持、重新设计和增强的下载引擎、与所有最新浏览器的独特高级集成、改进的工具栏以及大量其他改进和新功能,这一全新的更新,使得IDM下载器更加完美。值得一提的是,它可以借助油猴浏览器的脚本&…

Linux编译器-gcc或g++的使用

一.安装gcc/g 在linux中是不会自带gcc/g的,我们需要编译程序就自己需要安装gcc/g。 很简单我们使用简单的命令安装gcc:sudo yum install -y gcc。 g安装:sudo yum install -y gcc-c。 我们知道Windows上区分文件,都是使用文件…

ssm610学生社团管理系统+vue【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

小熊家务帮day15-day17 预约下单模块(预约下单,熔断降级,支付功能,退款功能)

目录 1 预约下单1.1 需求分析1.1.1 业务流程1.1.2 订单状态 1.2 系统设计1.2.1 订单表设计1.2.2 表结构的设置 1.3 开发远程调用接口1.3.0 复习下远程调用的开发1.3.1 查询地址簿远程接口jzo2o-api工程定义接口Customer服务实现接口 1.3.2 查询服务&服务项远程接口jzo2o-ap…

运维 之 DNS域名解析

前言 我们每天打开的网站,他是如何来解析,并且我们怎么能得到网站的内容反馈的界面呢?那什么是DNS呢(DNS(DomainNameservice,域名服务,主要用于因特网上作为域名和IP地址相互映射)那…

【iOS】MRC下的单例模式批量创建单例

单例模式的介绍和ARC下的单例请见这篇:【iOS】单例模式 目录 关闭ARC环境MRC下的单例ARC下的单例批量创建单例Demo 关闭ARC环境 首先关闭ARC环境,即打开MRC: 或是指定某特定目标文件为非ARC环境: 双击某个类文件,指定…

SpringBoot2+Vue3开发课程审核流程系统

SpringBoot2Vue3开发课程审核流程系统 简介 此系统实现了课程审核全流程功能并使用了Activiti7工作流技术,功能包含:课程管理、用户管理、流程定义、课程审核(我的申请、我的代办、我的已办) 功能介绍 课程管理 对课程信息的管…

C++的STL 中 set.map multiset.multimap 学习使用详细讲解(含配套OJ题练习使用详细解答)

目录 一、set 1.set的介绍 2.set的使用 2.1 set的模板参数列表 2.2 set的构造 2.3 set的迭代器 2.4 set的容量 2.5 set的修改操作 2.6 set的使用举例 二、map 1.map的介绍 2.map的使用 2.1 map的模板参数说明 2.2 map的构造 2.3 map的迭代器 2.4 map的容量与元…

API测试工具

apifox 微信扫描登录 不推荐: Download Postman

QT creator c动态链接库的创建与调用

QT creator c动态链接库的创建与调用 QT5.15.2 1.创建dll项目 确保两类型选择正确 2.选择MinGW 64-bit 3.点击完成 pro文件参考: QT - guiTEMPLATE lib DEFINES QT_DLL_DEMO_LIBRARYCONFIG c17# You can make your code fail to compile if it uses deprecat…

Flutter 使用ffigen生成ffmpeg的dart接口

Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频 第七章 使用ff…

以sqlilabs靶场为例,讲解SQL注入攻击原理【54-65关】

【Less-54】 与前面的题目不同是,这里只能提交10次,一旦提交超过十次,数据会重新刷新,所有的步骤需要重来一次。 解题步骤: 根据测试,使用的是单引号闭合。 # 判断字段的数量 ?id1 order by 3 -- aaa# …

.NET MAUI 了解MVVM

MVVM 模式中有三个核心组件:模型、视图和视图模型。 每个组件的用途不同。 下图显示了这三个组件之间的关系。 视图 视图负责定义用户在屏幕上看到的结构、布局和外观。 理想情况下,每个视图在 XAML 中定义,代码隐藏有限,不包含业…

(论文翻译)Coordinate Attention for Efficient Mobile Network Design(坐标注意力 CVPR2021)

Coordinate Attention for Efficient Mobile Network Design(CVPR2021) 文章目录 Coordinate Attention for Efficient Mobile Network Design(CVPR2021)摘要1.引言2.相关工作3.方法:Coordinate Attention3.1.Revisit …