APIFOX脚本及外部程序使用教程
APIFOX脚本及外部程序说明
如何配置脚本
1.
2.
3.
如何使用脚本
1.
2.
3.
4.
脚本文件
私钥、应用id设置脚本
var privateKey='用户私钥';
pm.variables.set("privateKey", privateKey);
var appId='应用id';
pm.variables.set("appId", appId);
请求脚本
// 设置请求格式
pm.request.headers.upsert({ key: "Content-Type", value: "application/json;charset=UTF-8" });
// 设置请求参数
var urlParam = pm.request.url.getPath();
var queryStr = pm.request.url.getQueryString();
if(queryStr != null & queryStr != ''){
urlParam = urlParam + '?' + queryStr;
}
console.log("请求urlParam为:" + urlParam);
// 获取配置的私钥
var privateKey = pm.variables.get("privateKey");
console.log("私钥为" + privateKey);
var appId = pm.variables.get('appId');
console.log("appId:"+appId)
// 生成 UUID 作为 nonce
function generateUUID() {
return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
const r = Math.random() * 16 | 0,
v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
//构建url
var urlParam = pm.request.url.getPath();
var queryStr = pm.request.url.getQueryString();
if(queryStr != null & queryStr != ''){
urlParam = urlParam + '?' + queryStr;
}
console.log("请求urlParam为:" + urlParam);
function generateRandomString(length) {
const chars = '0123456789abcdefghijklmnopqrstuvwxyz';
let result = '';
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * chars.length);
result += chars[randomIndex];
}
return result;
}
const nonce = generateUUID(); // 生成 nonce
console.log("Nonce: " + nonce); // 打印生成的 nonce
const timestamp = Date.now(); // 获取当前时间戳(毫秒)
console.log("Timestamp: " + timestamp); // 打印时间戳
const authString = `RSA2 app_id=${appId},nonce=${nonce},timestamp=${timestamp}`;
console.log("authString: " + authString);
// 获取body信息
var bodyContent = JSON.stringify(JSON.parse(
pm.request.body.raw.toString()));
console.log("去除转义符bodyContent为" + bodyContent);
const sign_str = `${authString}\nPOST\n${urlParam}\n${bodyContent}\n`;
console.log(sign_str); // 打印生成的字符串
// 转换为 Java 字符串格式
//const jsonString = JSON.stringify(sign_str);
//console.log("aaaa"+jsonString)
try {
var sign = pm.execute('test-sdk.jar', [sign_str, privateKey], {
className: 'util.TestUtil',
method: 'signV3',
paramTypes: ['String', 'String'],
})
// 签名数据传输会把 + 号变成空格,将+号数据转换
console.log("sign:"+sign);
var authorization =`${authString},sign=${sign}`;
pm.request.headers.upsert({
key: 'authorization',
value: authorization,
});
pm.request.headers.upsert({
key: 'yocyl-request-id',
value: generateRandomString(32),
});
} catch (e) {
console.log("异常");
console.error(e.message);
}
外部程序
外部程序的配置
1.
2.
外部程序下载地址
修改于 2024-10-21 05:49:52