脚本调用其他语言( java、python、php 等)
前置脚本和后置脚本,可以直接调用以下语言编写的外部程序:
java (.jar)
python (.py) // 注意:目前仅支持 python2
php (.php)
js (.js)
BeanShell (.bsh)
go (.go)
shell (.sh)
ruby (.rb)
lua (.lua)
提示
仅版本号 >= 7.0.13 的 Apipost 版本支持脚本调用外部程序。
使用方法
脚本中使用方法 apt.execute(fileName, args)
调用外部程序。
参数 ```fileName:String```,外部程序文件名绝对路径。
参数 ```args:Array<String>```,传给外部程序的运行参数,为字符串数组类型,可以传递多个参数。
返回值:String
,命令行运行程序时,在控制台输出的字符串。
确保电脑已经安装相应程序运行需要的环境。
.jar程序:需要 安装 java 环境。
.py程序:需要安装 python 环境。
.js程序:需要安装 nodejs 环境。
其他语言程序:需要安装对应语言的环境。
调用原理
调用外部程序是以命令行的方式运行程序,返回值为程序在控制台输出的字符串。 系统会自动根据外部程序的后缀名,调用对应的命令行来运行外部程序。
.jar程序:通过java命令运行。
如:脚本apt.execute('cn.example.Demo.jar', ['abc','bcd']),实际执行命令为java -jar cn.example.Demo.jar abc bcd。
如需要调用jar中指定方法,执行:apt.execute('cn.example.Demo.jar', ['abc','bcd'], {
className: 'com.example.Demo',
method: "sayHi"
}),实际执行了cn.example.Demo.jar文件com.example.Demo类sayHi方法,参数是['abc','bcd']
.py程序:通过python命令运行。
如:脚本apt.execute('md5-json.py', ['abc','bcd']),实际执行命令为python md5-json.py abc bcd。
.js程序:通过node命令运行。
如:脚本apt.execute('xxx.js', ['abc','bcd']),实际执行命令为node xxx.js abc bcd。
其他语言程序也是类似原理。
代码示例
后执行脚本:
try {
// php 示例,调用 demo.php
// 注意:json 格式数据作为参数时,需要使用 JSON.stringify 对参数进行序列化
// 实际命令行执行的命令为:php demo.php '{"a":1,"b":2}'
const phpResultString = apt.execute("demo.php", [JSON.stringify({ a: 1, b: 2 })]);
// 注意:返回数据为 json 格式字符串时,可使用 JSON.parse 反序列化
const phpResult = JSON.parse(phpResultString);
console.log("php 运行结果", phpResult);
} catch (e) {
console.error(e.message);
}
test.php 代码:
<?php
$param = json_decode($argv[1]);
$result = [];
foreach($param as $key=>$value)
{
$result[$key] = $value * 2;
}
echo json_encode($result);