跳到主要内容

脚本调用其他语言( 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);