前言

近期在使用apifox调试接口时,由于众多测试样例,每次修改参数都需要重新手动去生成一下签名,再回填入参数中,略烦。便着手寻找可自动生成签名并回填方法。查阅官网文档,发现所提供的样例是针对form表单类型可使用动态值{{signature}}进行拼接。但是我司是使用json交互,签名字段在json体内,因此就需自己琢磨方法了。

实现过程

将签名工具类添加到apifox扩展目录

image.png

如图按步骤将加签的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指定目录即可

设置接口前置操作

具体设值直接看自定义脚本即可,这里没啥好说的

image.png

// 外部程序路径,传递参数
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;


标题:巧用Apifox自动生成接口签名
作者:JonLv
地址:http://39.108.183.139:8080/articles/2024/05/29/1716978027879.html