咏南跨平台中间件REST API
主旨
1)为了中间件支持跨操作系统部署,客户端支持跨操作系统、跨设备、跨开发语言,特制订本REST API规约。
2)所有接口均支持HTTP GET\POST调用。
3)调用示例为DELPHI代码,其他语言可参照编写。
4)JSON字符串的字符编码统一为UTF8。
5)因作者水平有限,不虑之处,恳请指正。
6)其他接口,可参照定义。
查询数据接口
功能
可以一次查询返回1~N个表的数据,支持主从表数据查询。
JSON样式
cols:字段定义,包括字段的名称、长度和类型。
rows:表数据。
{
"tables": [
{
"cols": [
{
"name": "goodsid",
"size": 8,
"type": "string"
},
{
"name": "goodsname",
"size": 50,
"type": "string"
}
],
"rows": [
{
"goodsid": "100036",
"goodsname": "秋冬四件套哦",
},
{
"goodsid": "100050",
"goodsname": "天堂伞",
}
]
},
{
"cols": [
{
"name": "unitid",
"size": 4,
"type": "string"
},
{
"name": "unitname",
"size": 6,
"type": "string"
}
],
"rows": [
{
"unitid": "11",
"unitname": "个"
},
{
"unitid": "12",
"unitname": "双"
}
]
}
]
}
返回值
成功:JSON表数据
失败:{”return”:”false”,”error”:”错误信息”}
DELPHI调用示例
procedure TForm1.Button2Click(Sender: TObject);
begin
var url, sql1, sql2: string;
sql1 := TNetEncoding.URL.Encode('select * from tgoods');
sql2 := TNetEncoding.URL.Encode('select * from tunit');
url := FUrl + 'rest?accountno=1&count=1&plugid=9999&funcid=' + IntToStr(cmd_rest_query) + '&sql1=' + sql1 + '&sql2=' + sql2;
var s: string := IdHTTP1.Get(url);
Memo1.Lines.Add(s);
end;
提交数据接口
功能
可以一次提交1~N个表的修改数据。
JSON样式
table:提交的表名。
rows:提交的数据。
{
"deltas":
[
{
"table": "tunit",
"rows":
[
{"action": "modify", "original": {"unitid":"11","unitname":"个"}, "current": {"unitname":"中"}},
{"action": "delete", "original": {"unitid":"66","unitname":"国"}},
{"action": "insert", "current":{"unitid":"13","unitname":"人"}}
]
}
......
]
}
返回值
成功:{”return”:”true”}
失败:{”return”:”false”,”error”:”错误信息”}
下载文件接口
功能
可以一次下载1~N个文件。
JSON样式
{"files":[
{"fielname1":"文件名1","file1":"BASE64文件流1"},
{"fielname2":"文件名1","file2":"BASE64文件流2"}
]
}
返回值
成功:JSON文件数据
失败:失败:{”return”:”false”,”error”:”错误信息”}
DELPHI调用示例
procedure TForm1.Button10Click(Sender: TObject);
//{"files":[
// {"fielname1":"文件名1","file1":"BASE64文件流1"},
// {"fielname2":"文件名1","file2":"BASE64文件流2"}
// ]
//}
begin
var s: string := IdHTTP1.get(FUrl + 'rest?plugid=8888&funcid=5&filenum=1&filename1=1.exe');
var jo: JsonDataObjects.TJsonObject := JsonDataObjects.TJsonObject.Parse(s) as JsonDataObjects.TJsonObject;
var i: Integer;
var filename, filecontent: string;
var dd: TIdDecoderMIME := TIdDecoderMIME.Create(nil);
var ms: TMemoryStream := TMemoryStream.Create;
try
for i := 0 to jo.A['files'].Count - 1 do
begin
filename := jo.A['files'].O[i].s['filename' + (i + 1).ToString];
filecontent := jo.A['files'].O[i].s['file' + (i + 1).ToString];
dd.DecodeStream(filecontent, ms); //base64解码
ms.SaveToFile(filename); //保存下载的文件
ms.Clear;
end;
finally
dd.Free;
ms.Free;
end;
end;
上传文件接口
功能
可以一次上传1~N个文件
DELPHI调用示例
上传文件使用MultiPart Form-Data。
procedure TForm1.Button9Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
var ms: TIdMultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
ms.AddFile('file1', OpenDialog1.FileName);
IdHTTP1.Post(FUrl + 'rest?plugid=8888&funcid=6&filenum=1&filename1=1.exe', ms);
ms.free;
end;
end;
返回值
成功:{”return”:”true”}
失败:{”return”:”false”,”error”:”错误信息”}
咏南跨平台中间件REST API的更多相关文章
- NGINX实现咏南跨平台中间件集群
NGINX实现咏南跨平台中间件集群 首先要开启咏南LINUX中间件. 1)编辑usr/local/nginx/conf/nginx.conf #user nobody;worker_processe ...
- 咏南跨平台中间件支持LINUX和WINDOWS插件架构
咏南跨平台中间件支持LINUX和WINDOWS插件架构
- 咏南ISAPI中间件
咏南ISAPI中间件 只支持WINDOWS服务器部署,中间件作为IIS的ISAPI插件部署. 基于WINDOWS的IIS,使用HTTP.SYS通讯,不依赖任何三方控件. 可以基于IIS HTTPS. ...
- 咏南LINUX中间件
咏南LINUX中间件 什么是跨平台? DELPHI跨平台已经不是停留在理论,而是可以实用了. 同一套中间件既能在WINDOWS服务器上面部署,又可以在LINUX服务器上面部署. 而做到这一切,只需要一 ...
- 咏南IOCP中间件支持海量并发方案(集群)
咏南IOCP中间件支持海量并发方案(集群) 支持D7~XE10.1.1开发 支持负载均衡,自动故障转移 可以在不停机的状态下,根据负载情况灵活增加中间件机器 中间件使用IOCP通信,单中间件支持并发数 ...
- 咏南IOCP中间件
咏南IOCP中间件 特大好消息,咏南中间件系列新增加——咏南IOCP中间件.咏南IOCP中间件完全兼容咏南DATASNAP中间件的远程方法接口. 中间件DELPHI7~DELPHI XE10.1.1都 ...
- 咏南DATASNAP中间件提供免费使用了
咏南DATASNAP中间件提供免费使用了. 百度网盘分享: 链接: http://pan.baidu.com/s/1c06Ivp2 密码: dhhm
- 咏南DELPHI7中间件+开发框架
咏南DELPHI7中间件+开发框架 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmain.exe ...
- 咏南Mormot中间件接口
咏南Mormot中间件接口 只使用了MORMOT的HTTPS.SYS作为通讯,数据引擎使用FIREDAC,数据序列/还原是自行封装. 客户端支持FDMemeTable和ClientDataSet数据集 ...
随机推荐
- js学习之存储
一.Cookie和Session的区别 1.cookie数据存放在客户的浏览器上,session数据放在服务器上(一般以内存.数据库.文件形式). 2.session会在一定时间内保存在服务器上.当访 ...
- JavaScript 函数(一)
一.函数概述 1.概述 把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用函数的作用就是封装一段代码,将来可以重复使用. 二.使用函 ...
- QTGraphics-View拖拽以及鼠标指针操作
因为QGraphicsView继承自QWidget,它也提供了像QWidget那样的拖拽功能. 另外,为了方便,Graphics View框架也为场景以及每个item提供拖拽支持.当视图接收到拖拽事件 ...
- 访问Stack Overflow速度超慢的原因
很多网站,尤其是国外网站,为了加快网站的速度,都是用了 Google 的 CDN. 但是在天朝,由于某些原因,导致全球最快的 CDN 变成了全球最慢的. 解决方法步骤如下: 下载ReplaceGoog ...
- Django 初始化数据库遇到问题(python manage.py migrate)
问题:django.db.utils.InternalError: (1049, "Unknown database 'main'") 在Django 配置的数据库上 执行 cr ...
- zabbix--钉钉告警
zabbix 钉钉告警机制 群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步.例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步: ...
- first集合follow集的求法
FIRST集的定义 : 设G=(VT,VN,P,S)是上下文无关文法 FIRST(a)={a|a=>*ab,a∈VT, a,b∈V*} 若a=>*ε则规定ε∈FIRST (a) FIRST ...
- jenkins部署java项目(五)
一.web server安装jdk+tomcat其中jdk可以为openjdk,版本1.8 1.1 安装jdk环境 方式一:直接使用yum安装openjdk # * 方式二:本地安装在oracle官网 ...
- Django如何与ajax通信
示例一 文件结构 假设你已经创建好了一个Django项目和一个App,部分结构如下: mysite myapp |___views.py |___models.py |___forms.py |___ ...
- excel打开提示 文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?
有的时候打开xls文档时,会提示“文件格式和扩展名不匹配.文件可能已损坏或不安全.除非您信任其来源,否则请勿打开.是否仍要打开它?” 遇到这种情况,我们需要 打开“注册表编辑器” win键+R键,打开 ...