主旨

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的更多相关文章

  1. NGINX实现咏南跨平台中间件集群

    NGINX实现咏南跨平台中间件集群 首先要开启咏南LINUX中间件. 1)编辑usr/local/nginx/conf/nginx.conf #user  nobody;worker_processe ...

  2. 咏南跨平台中间件支持LINUX和WINDOWS插件架构

    咏南跨平台中间件支持LINUX和WINDOWS插件架构

  3. 咏南ISAPI中间件

    咏南ISAPI中间件 只支持WINDOWS服务器部署,中间件作为IIS的ISAPI插件部署. 基于WINDOWS的IIS,使用HTTP.SYS通讯,不依赖任何三方控件. 可以基于IIS HTTPS. ...

  4. 咏南LINUX中间件

    咏南LINUX中间件 什么是跨平台? DELPHI跨平台已经不是停留在理论,而是可以实用了. 同一套中间件既能在WINDOWS服务器上面部署,又可以在LINUX服务器上面部署. 而做到这一切,只需要一 ...

  5. 咏南IOCP中间件支持海量并发方案(集群)

    咏南IOCP中间件支持海量并发方案(集群) 支持D7~XE10.1.1开发 支持负载均衡,自动故障转移 可以在不停机的状态下,根据负载情况灵活增加中间件机器 中间件使用IOCP通信,单中间件支持并发数 ...

  6. 咏南IOCP中间件

    咏南IOCP中间件 特大好消息,咏南中间件系列新增加——咏南IOCP中间件.咏南IOCP中间件完全兼容咏南DATASNAP中间件的远程方法接口. 中间件DELPHI7~DELPHI XE10.1.1都 ...

  7. 咏南DATASNAP中间件提供免费使用了

    咏南DATASNAP中间件提供免费使用了. 百度网盘分享: 链接: http://pan.baidu.com/s/1c06Ivp2 密码: dhhm

  8. 咏南DELPHI7中间件+开发框架

    咏南DELPHI7中间件+开发框架 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmain.exe ...

  9. 咏南Mormot中间件接口

    咏南Mormot中间件接口 只使用了MORMOT的HTTPS.SYS作为通讯,数据引擎使用FIREDAC,数据序列/还原是自行封装. 客户端支持FDMemeTable和ClientDataSet数据集 ...

随机推荐

  1. 微信小程序必知相关知识

    微信小程序必知相关知识 1 请谈谈微信小程序主要目录和文件的作用? project.config.json 项目配置文件,用得最多的就是配置是否开启https校验: App.js 设置一些全局的基础数 ...

  2. Java 基本类型包装类Wrapper

    一.包装类概述 1.为什么需要包装类 Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的.基本数据类型有它的优势:性能(效率高,节省空间). ...

  3. Java 之 Collection 接口

    一.Collection 集合 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是 java.util.List 和 java.util.Set. ...

  4. CDA数据分析【第二章:数据收集与导入】

    一.概述 数据是对我们所研究现象的属性和特征的具体描述,在分析数据前必须要做的工作就是收集数据.按照存储形式可以将数据划分为结构化数据.非结构化数据和半结构化数据. 1.结构化数据 能够用数据或统一的 ...

  5. prometheus学习系列十一: Prometheus和AlertManager的高可用

    前面的系列中, prometheus和alertmanager都是单机部署的,会有单机宕机导致系统不可用情况发生.本文主要介绍下prometheus和alertmanager的高可用方案. 服务的高可 ...

  6. Linux下关于Qt无法调用fcitx的中文输入

    1 本机环境: deepin 15.11 Qt 5.11.3 fcitx 输入法 2 问题描述 Qt Creator 和使用 QT 编译的程序运行时均不能使用deepin系统自带的fcitx输入法,且 ...

  7. mysql显示一张表的索引

    show index from tm_show.fulfillment_order;show index from tm_show.express_verify;show index from tra ...

  8. Fire Balls 03—— 多个圆环以及圆环的变速变向

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  9. nginx编译安装以及配置tcp转发

    依赖包安装 yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl open ...

  10. 云打印 对Echo的Beta产品测试报告

    云打印 对Echo的Beta产品测试报告 课程名称:软件工程1916|W(福州大学) 团队名称: 云打印 作业要求: 项目Beta冲刺(团队) 作业目标:作业集合 团队队员 队员学号 队员姓名 个人博 ...