全能中間件 REST API 使用手冊算法
Ver:17.6.24 sql
技術支持QQ:64445322 數據庫
QQ羣:339616649編程
任何第三方應用或網站均可以經過使用開放API爲用戶提供實時優質的服務。 全部的API都是基於REST基礎的接口規範,可兼容多種編程語言。json
一、參數編碼api
全部的請求和響應數據編碼皆爲utf-8格式,url裏的全部參數值請作URIEncode編碼;數組
各個參數請進行URL 編碼(UTF-8),編碼時請遵照 RFC 1738。服務器
二、HTTP MIME類型:Content-type: application/json; charset=utf-8app
三、服務地址:http(s)://127.0.0.1:9981/rest編程語言
四、API 接口
4.1【用戶登陸】/user/login
1)、接口說明:登陸中間件
2)、HTTP請求方式:GET/POST
3)、輸入參數說明:
參數名稱 |
參數類型 |
描述 |
是否必須 |
user_name |
string |
用戶名 |
是 |
password |
string |
密碼 |
是 |
version |
string |
版本號,可選值:2.0 |
否 |
4)、請求示例:
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"}
五、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