主旨... 1sql
功能... 1url
JSON樣式... 2spa
返回值... 3操作系統
DELPHI調用示例... 3rest
提交數據接口... 4code
功能... 4orm
JSON樣式... 4中間件
返回值... 4blog
1)爲了中間件支持跨操做系統部署,客戶端支持跨操做系統、跨設備、跨開發語言,特制訂本REST API規約。
2)全部接口均支持HTTP GET\POST調用。
3)調用示例爲DELPHI代碼,其餘語言可參照編寫。
4)JSON字符串的字符編碼統一爲UTF8。
5)因做者水平有限,不慮之處,懇請指正。
6)其餘接口,可參照定義。
能夠一次查詢返回1~N個表的數據,支持主從表數據查詢。
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」:」錯誤信息」}
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個表的修改數據。
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個文件。
{"files":[
{"fielname1":"文件名1","file1":"BASE64文件流1"},
{"fielname2":"文件名1","file2":"BASE64文件流2"}
]
}
成功:JSON文件數據
失敗:失敗:{」return」:」false」,」error」:」錯誤信息」}
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個文件
上傳文件使用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」:」錯誤信息」}