全能中间件 REST API 使用手册

全能中间件 REST API 使用手册

Ver:17.6.24 

技术支持QQ:64445322  

QQ群:339616649

 

   任何第三方应用或网站都可以通过使用开放API为用户提供实时优质的服务。 所有的API都是基于REST基础的接口规范,可兼容多种编程语言。

 

1、参数编码

所有的请求和响应数据编码皆为utf-8格式,url里的所有参数值请做URIEncode编码;

各个参数请进行URL 编码(UTF-8),编码时请遵守 RFC 1738。

 

2、HTTP MIME类型:Content-type: application/json; charset=utf-8

3、服务地址:http(s)://127.0.0.1:9981/rest

4、API 接口

4.1【用户登录】/user/login

1)、接口说明:登录中间件

2)、HTTP请求方式:GET/POST

3)、输入参数说明:

参数名称

参数类型

描述

是否必须

user_name

string

用户名

password

string

密码

version

string

版本号,可选值:2.0

 

4)、请求示例:

http://127.0.0.1:9981/rest/user/login?user_name=admin&password=c4ca4238a0b923820dcc509a6f75849b&version=2.0

 

 

 

5)、服务端应答

{

"status": 0,

"message": "ok",

"token": "DBF0FC1C3DD349329459248245AB02E3",

"expire_time": "2017-04-25T10:30:03.232",

"app_secret": "d122e06e41c7485ba27eb38c6afc5159"

}

 

4.2【调用存储过程】db/storedproc

1)、接口说明:调用存储过程、函数、可返回输出参数、返回值、数据集

2)、HTTP请求方式:GET/POST

3)、输入参数说明:

参数名称

参数类型

描述

是否必须

token

String

令牌,用户登录授权成功后,由服务器返回

data

String

为JSON格式 ①

sign_method

String

签名的摘要算法,可选值为:hmac,md5,②

sign

String

签名

timestamp

String

时间戳,格式为yyyy-MM-dd HH:mm:ss,时区为GMT+8,例如:2016-01-01 12:00:00

version

String

版本号,可选值:2.0

 

① data参数JSON数据

参数名称

参数类型

描述

是否必须

db_name

String

数据库连接名称

proc_name

String

存储过程名称

method

String

执行方法,可选值为:open_proc、exec_proc、exec_func

params

String

参数,JSON 数组[{"name":"参数名称","value":"参数值"}]

 

{

  "db_name": "DB_MSSQL", //数据库连接名称

  "proc_name": "sp_Test1", //存储过程名称

  "method": "open_proc", //open_proc、exec_proc、exec_func

  "params": [{           //输入参数,输出参数不用填

    "name": "@p1",

    "value": 10

  }, {

    "name": "@p2",

    "value": "abcdefg"

  }]

}

② 签名算法

http://open.taobao.com/doc2/detail.htm?articleId=101617&docType=1&treeId=1

 

4)、服务端应答数据格式:

{

  "status": 0,         //状态码

  "message": "OK",    //状态描述

  "rows_affected": 2,  //影响的行

  "params": [{       //输出参数

    "name": "@p3",

    "value": "110"

  }],

  "meta": [

    ["字段1", "ftGuid"],

    ["字段2", "ftString", 50],

    ["字段3", "ftString", 20],

    ["字段4", "ftBlob"]

  ],

  "data": [

    ["字段1数据", "字段2数据", "字段3数据", "字段4数据"],

["字段1数据", "字段2数据", "字段3数据", "字段4数据"]

  ]

}

4.3【查询数据】db/opensql

1)、接口说明:
2)、HTTP请求方式:GET/POST

3)、输入参数说明:

参数名称

参数类型

描述

是否必须

token

String

令牌,用户登录授权成功后,由服务器返回

data

String

为JSON格式 ①

sign_method

String

签名的摘要算法,可选值为:hmac,md5,②

sign

String

签名

timestamp

String

时间戳,格式为yyyy-MM-dd HH:mm:ss,时区为GMT+8,例如:2016-01-01 12:00:00

version

String

版本号,可选值:2.0

 

 

① data参数JSON数据

参数名称

参数类型

描述

是否必须

db_name

String

数据库连接名称

sql_command_id

String

sql 编号

page_size

int

每页数据条数

page_index

int

第 x 页

 

{

  "db_name": "DB_MSSQL", //数据库连接名称

  "sql": "SELECT * FROM my_table WHERE a=:a AND b=:b", 或者

  "sql_command_id": "SQL001", 

  "page_size": 10, //分页大小,为0,则不分页

   "page_index":0,

  "params": [{           //输入参数,输出参数不用填

    "name": "a",

    "value": “abc”

  }, {

    "name": "b",

    "value": "123456"

  }]

}

 

4)、服务端应答数据格式:

{

  "status": 0,

  "message": "ok",

  "count": 10,   //数据行数

  "total": 1000,  //数据总数

  "meta": [

    ["字段1", "ftGuid"],

    ["字段2", "ftString", 50],

    ["字段3", "ftString", 20],

    ["字段4", "ftBlob"]

  ],

  "data": [

      ["字段1数据", "字段2数据", "字段3数据", "字段4数据"],

  ["字段1数据", "字段2数据", "字段3数据", "字段4数据"]

  ]

}

 

4.4【查询数据】db/execsql

1)、接口说明:
2)、HTTP请求方式:GET/POST

3)、输入参数说明:

参数名称

参数类型

描述

是否必须

token

String

令牌,用户登录授权成功后,由服务器返回

data

String

为JSON格式 ①

sign_method

String

签名的摘要算法,可选值为:hmac,md5,②

sign

String

签名

timestamp

String

时间戳,格式为yyyy-MM-dd HH:mm:ss,时区为GMT+8,例如:2016-01-01 12:00:00

version

String

版本号,可选值:2.0

 

 

① data参数JSON数据

{

  "db_name": "DB_MSSQL", //数据库连接名称

  "sql": "UPDATE my_table SET a=:a WHERE b=:b", //or "DELETE FROM my_table WHERE a=:a AND b=:b"

  "sql_command_id": "SQL002", 

  "params": [{           //输入参数,输出参数不用填

    "name": "a",

    "value": “abc”

  }, {

    "name": "b",

    "value": "123456"

  }]

}

 

4)、服务端应答数据格式:

{"status":0,"message":"ok","rows_affected":1}

 

4.5【注销】user/logout

1)、接口说明:
2)、HTTP请求方式:GET/POST

3)、输入参数说明:

参数名称

参数类型

描述

是否必须

token

string

令牌,用户登录授权成功后,由服务器返回

version

string

版号码,可选值:2.0

 

4)、服务端应答:{"status":0,"message":"ok","rows_affected":1}

 

4.6【短信验证】alidayu/sendsms

1)、接口说明:
2)、HTTP请求方式:GET/POST

3)、输入参数说明:

参数名称

参数类型

描述

是否必须

num

string

手机号码

token

string

令牌,获取验证码后,由服务器返回

code

string

短信验证码

4)、请求验证码示例:

http://127.0.0.1:9981/rest/alidayu/sendsms?num=1888888888

5)、服务端应答:{"status":0,"message":"ok","token":"0F2752F4AA2E40AA931DE927756EB5D1"}

6)、提交验证码示例:

http://127.0.0.1:9981/rest/alidayu/sendsms?code=564732&token=0F2752F4AA2E40AA931DE927756EB5D1

7)、服务端应答:{"status":0,"message":"ok"}

 

5、REST 接口二次开发

1)、DLL Demo

 1 library HelloRest;
 2 
 3 uses
 4   System.SysUtils,
 5   Winapi.Windows,
 6   System.NetEncoding,
 7   rtcConn,
 8   rtcInfo,
 9   rtcHttpSrv,
10   rtcMW.Server.Consts in '..\..\rtcMW.Server.Consts.pas',
11   rtcMW.REST.Plugin in '..\..\REST\rtcMW.REST.Plugin.pas',
12   rtcMW.REST.Types in '..\..\REST\rtcMW.REST.Types.pas' ,
13   rtcMW.Server.LogWriter in '..\..\rtcMW.Server.LogWriter.pas',
14   rtcMW.Server.Settings in '..\..\rtcMW.Server.Settings.pas',
15   rtcMW.Server.SharedMemory in '..\..\rtcMW.Server.SharedMemory.pas';
16 
17 {$R *.res}
18 
19 type
20   THelloPlugin = class(TPlugin)
21   private
22     constructor Create; override;
23     function GetPluginInfo: TPluginInfo; override;
24     procedure ProcessRequest(Sender: TRtcConnection); override;
25     function CheckRequest(Sender: TRtcConnection): Boolean; override;
26   end;
27 
28   { THelloPlugin }
29 
30 constructor THelloPlugin.Create;
31 begin
32 end;
33 
34 function THelloPlugin.CheckRequest(Sender: TRtcConnection): Boolean;
35 begin
36   inherited;
37   //这里可用来检查客户端请求参数是否合法
38   Result := True;
39 end;
40 
41 function THelloPlugin.GetPluginInfo: TPluginInfo;
42 begin
43   Result.Category := '演示';
44   Result.Name := '哈喽';
45   Result.Method := 'GET';
46   Result.FileName := '/test';
47   Result.Params := 'say';
48   Result.Description := '这是一个 DLL 插件演示';
49   Result.Example := 'http://localhost:8081/test?say=你好';
50 end;
51 
52 procedure THelloPlugin.ProcessRequest(Sender: TRtcConnection);
53 var
54   Param: string;
55   JsonObj: TRtcRecord;
56 begin
57 
58   inherited;
59 
60   with TRtcHttpServer(Sender) do
61   begin
62     Param := TURLEncoding.URL.Decode(Request.Query.Value['say']);
63     JsonObj := TRtcRecord.Create;
64     try
65       JsonObj.asInteger['status']:=STATUS_OK;
66       JsonObj.asText['message']:= '这是一个 DLL REST 插件演示:参数 say = ' + Param;
67       Write(JsonObj.ToJSON);
68     finally
69       FreeAndNil(JsonObj);
70     end;
71 
72   end;
73 
74 end;
75 
76 
77 function RegisterPlugin: IPlugin; stdcall;
78 begin
79   Result := THelloPlugin.Create;
80 end;
81 
82 exports
83   RegisterPlugin;
84 begin
85 
86 end.
87 
88  

 


作者: oldfarmer
出处: http://www.cnblogs.com/rtcmw/
欢迎探讨交流 DELPHI 相关技术,QQ:64445322 QQ群:734515869
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2017-07-25 09:53  塞翁失身  阅读(1950)  评论(0编辑  收藏  举报