DolphinDB WebApi
简介
DolphinDB WebApi是DolphinDB提供的访问Server 资源的程序接口,通过向url(http://Ip:Port) post Json数据包,即可使server运行指定脚本代码,并将结果以json的格式返回
适用场景
任何编程语言,只要支持通过http协议向指定url提交数据,能够解析Json格式数据包,那么就可以使用 DolphinDB WebApi访问DolphinDB Server
Hello World
通过一个简单的示例,让大家直观的了解WebApi是如何调用的。
这里我们简单的让server做一个1+2=3的运算。只要组织一个类似下面的格式的json数据包,然后把数据包post到datanode url,比如 http://localhost:8848
- javascript调用示例
var paramJson = {...}
var option = {
url: "http://localhost:8848",
async: true,
data: paramJson,
type: "POST",
dataType: "json",
success: function (data) {
var resultJson = data; //data={...}
}
}
$.ajax(option);
- 入参格式
paramJson = {
"sessionID": "942605602",
"functionName": "executeCode",
"params": [{
"name": "script",
"form": "scalar",
"type": "string",
"value": "1+2"
}]
}
- 返回结果格式
resultJson = {
"sessionID": "942605602",
"resultCode": "0",
"msg": "",
"object": [{
"name": "",
"form": "scalar",
"type": "int",
"value": "3"
}]
}
Json包格式详解
[提交格式]
-
SessionID:指定调用的会话ID,初次调用会话ID为0,在一个用户登录会话期间,同一个Server会将SessionID跟登录用户关联
-
functionName:指定调用的函数名称。
-
params: functionName指定参数所需要的入参,params是一个json array
[返回格式]
-
sessionID:本次脚本执行所在的会话ID
-
resultCode : 0-执行正常 1-执行异常
-
msg:当resultCode为1时,此处会告知异常提示信息
-
object:脚本执行返回的对象信息。
Javascript DolphinDB WebApi Package
我们为javascript的开发者提供了访问webApi的开发包,封装如下方法:
- CallWebApi: 提供 CallWebApi方法,将Json数据包提交到指定url
- CodeExecutor: 提供run和runSync方法,是通过callWebApi的方式调用了Server的executeCode方法,封装了json参数的组装过程。
- DolphinEntity:返回结果处理类。提供toScalar,toVector,toTable,toMatrix 方法,可以方便的将返回结果从json数据包中解析成为 javascript 的JsonObject或JsonArray,开发者根据返回的DataForm选择合适的方法来解析结果。
要使用javascript 开发包,需要引入 callWebApi.js, executeCode.js, dolphinApi.js
按照上面的例子,同样运行1+2的脚本,利用开发包调用方式如下
var server = new DatanodeServer("http://localhost:8848");
var result = new DolphinEntity(server.runSync("1+2")).toScalar();
在js里得到的result = 3
上面的代码使用同步方式调用,javascript脚本会等待server执行完毕后才会继续,如果需要使用异步方式调用,代码如下
var server = new DatanodeServer("http://localhost:8848");
server.run("1+2",function(re){
var reObj = new DolphinEntity(re);
var result = reObj.toScalar();
});
DolphinDB WebApi Reference
- run:异步执行脚本
new DatanodeServer("http://[datanodeIp]:[port]").run(script,function(re){
//var jsonstr = re;
//var DolphinEntity(jsonstr);
})
- runSync:同步执行脚本
var re = new DatanodeServer("http://[datanodeIp]:[port]").runSync(script);
- login:登录系统
new DatanodeServer("http://[datanodeIp]:[port]").login("admin","pass");
- logout:登出当前用户
new DatanodeServer("http://[datanodeIp]:[port]").logout()
网友评论