ServerJS调用
v1.0.2
1、接口说明
根据用户需求可定义在线接口(serverJS),其定义语言为Javascript(ES5语法)。ServerJS接口入口参数名称:input,可通过赋值该参数将数据输入到接口层进行后续处理。接口认证支持Basic方式。
# 接口地址
/script/exec/js
# 方法
GET、POST
# 参数
input=[string] 消息主题内容,在调用段消息内容为JSON,需要进行JSON.stringify和encodeURIComponent处理
isfile=[bool] 默认true
filepath=[string] 接口文件路径,运维数据中台中分布式文件系统路径
rawdata=[bool] 是否只返回响应的消息主体
# Body
input=[string] 消息主题内容,在调用段消息内容为JSON,需要进行JSON.
filepath=[string] 接口文件路径,运维数据中台中分布式文件系统路径
rawdata=[bool] 是否只返回响应的消息主体
# 成功
Code: 200
Content: { status:"ok", message:{}}
# 失败
Code: 500 ERROR
Content: { status:"error", message:"error message." }
2、调用样例
在线封装一个获取流程cpu的接口:【cpu.js】,接口内容如下:
var action = function(){
var rtn = null;
try{
rtn = odb.mql("select * from /cncc/action/change_main limit 200");
}catch(err){
log.error(err);
}
return rtn;
};
OUTPUT = action();
外部系统调用示例如下:
cURL
curl --location --request POST 'http://172.23.12.228:8080/script/exec/js?issys=true&filepath=/cncc/api/cpu.js'
--header 'Authorization: Basic bWV0YS5hZG1pbjphZG1pbg=='
--form 'input="{\"name\":\"test get cpu data\"}"'
Jquery
var form = new FormData();
form.append("input", "{\"name\":\"test get cpu data\"}");
var settings = {
"url": "http://172.23.12.228:8080/script/exec/js?issys=true&filepath=/cncc/api/cpu.js",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "Basic bWV0YS5hZG1pbjphZG1pbg=="
},
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Python
import requests
url = "http://172.23.12.228:8080/script/exec/js?issys=true&filepath=/cncc/api/cpu.js"
payload={'input': '{"name":"test get cpu data"}'}
files=[]
headers = {
'Authorization': 'Basic bWV0YS5hZG1pbjphZG1pbg=='
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Java
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://172.23.12.228:8080/script/exec/js?issys=true&filepath=/cncc/api/cpu.js"))
.header("Accept", "*/*")
.header("Authorization", "Basic d2VjaXNlLmFkbWluOmFkbWlu")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\"input\": {\"name\":\"test get cpu data\"}}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
3、返回样例
{
"message": {
"PMTSAP01": {
"cpu_busy": 23,
"cpu_busy_avg": 33,
"cpu_busy_max": 35,
"timestamp": 1663316412049
},
"YPMTSAP01": {
"cpu_busy": 33,
"cpu_busy_avg": 33,
"cpu_busy_max": 45,
"timestamp": 1663316412049
}
},
"status": "ok",
}