前言
近期在使用apifox调试接口时,由于众多测试样例,每次修改参数都需要重新手动去生成一下签名,再回填入参数中,略烦。便着手寻找可自动生成签名并回填方法。查阅官网文档,发现所提供的样例是针对form表单类型可使用动态值{{signature}}
进行拼接。但是我司是使用json交互,签名字段在json体内,因此就需自己琢磨方法了。
实现过程
将签名工具类添加到apifox扩展目录
如图按步骤将加签的Jar包(apifox只支持Jar包模式不支持Java文件)添加到对应目录即可(这里必须吐槽下交互!!!原来需要自己将Jar挪到这个目录,笔者还以为这是一个文件上传接口....apifox可帮助挪到对应目录,害我点了好久)
这里介绍下生成Jar的几个需要注意的点:注意指定好main方法所在类,其次就是构建时需将pom中所需依赖也一并构建。构建时采用如下配置即可
<build>
<finalName>${project.artifactId}</finalName><!--修改编译出来的jar包名,仅为{artifactId}.jar-->
<plugins>
<plugin>
<!-- 将pom中依赖也一并打入Jar -->
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 这里指定好main方法类即可 -->
<mainClass>XHSignatureUtil</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- 这个名字可以更具描述性 -->
<phase>package</phase> <!-- 绑定到打包生命周期阶段 -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
将构建好的Jar放入apifox指定目录即可
设置接口前置操作
具体设值直接看自定义脚本即可,这里没啥好说的
// 外部程序路径,传递参数
console.log('pm.request.body.raw:', pm.request.body.raw);
// 调用jar,并将json请求体参数全部传入进行生成签名
const result = await pm.executeAsync('demo-jar-with-dependencies.jar', [pm.request.body.raw])
console.log('Result:', result);
// 对json请求参数进行重新赋值,此json带 sign
pm.request.body.raw = result;