• 咏南跨平台中间件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 GETPOST调用。

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

     

  • 相关阅读:
    Oracle 获取本周、本月、本季、本年的第一天和最后一天(转载)
    easyui tabs页签显示在底部属性
    java mybatis XML文件中大于号小于号转义(转载)
    原生JS日历 + JS格式化时间格式
    ajax之async属性
    Easyui 行编辑
    css中实现显示和隐藏(转)
    layer弹出层 获取index
    js中关于json常用的内容、js将数字保留两位小数
    发布项目到github上web服务器来运行
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/11905791.html
Copyright © 2020-2023  润新知