咏南跨平台中间件REST API

 

主旨... 1

查询数据接口... 1

功能... 1

JSON样式... 2

返回值... 3

DELPHI调用示例... 3

提交数据接口... 4

功能... 4

JSON样式... 4

返回值... 4

下载文件接口... 5

功能... 5

JSON样式... 5

返回值... 5

DELPHI调用示例... 5

上传文件接口... 6

功能... 6

DELPHI调用示例... 6

返回值... 7

 

主旨

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”:”错误信息”}

 

posted @ 2019-11-21 15:08  delphi中间件  阅读(494)  评论(0编辑  收藏  举报