kbmmw 中简单返回 extjs 数据JSON

时间:2023-03-10 02:19:09
kbmmw 中简单返回 extjs 数据JSON

以前,我们通过自己写json 来返回数据表的内容。在delphi 10.2.2中,官方自带了一个FDBatchMoveJSONWriter1

来直接处理数据库内容。把结果推送到浏览器客户端。

今天我们就利用kbmmw 自身的功能,做一个类似的东西。

在主界面放上相关的数据库访问控件

kbmmw 中简单返回 extjs 数据JSON

首先在服务上放两个东西

kbmmw 中简单返回 extjs 数据JSON

一个查询,一个kbmmwjsonstreamformat.

定义相关的函数

     [kbmMW_Rest('method:get, path:getdata')]
[kbmMW_Method]
function getdata([kbmMW_Rest('value: "$tname", required: true')] const tname:string):string;

并完成对应的执行代码

function TkbmMWCustomHTTPSmartService1.getdata(const tname: string): string;
var
ms:Tstringstream;
sjson:TkbmMWJSONStreamer;
alljson,outjson: TkbmMWJSONObject;
datajson: TkbmMWJSONArray;
begin
if tname='' then
begin
result:='{"result":"表名为空!"}';
exit;
end;
cx.SQL.Clear;
cx.SQL.Add('select * from '+tname);
cx.Open;
if cx.IsEmpty then
begin
result:='{"result":"数据为空!"}';
exit;
end;
ms:=Tstringstream.Create;
sjson:=TkbmMWJSONStreamer.Create;
outjson:=TkbmMWJSONObject.Create; try
cx.SaveToStreamViaFormat(ms,kbmMWJSONStreamFormat1);
ms.Position:=;
alljson:=TkbmMWJSONObject(sjson.LoadFromUTF8Stream(ms));
datajson:=TkbmMWJSONArray(alljson.AsArray['data']);
outjson.AsArray[tname]:=datajson;
result:= sjson.SaveToUTF16String(outjson)
finally
ms.Free;
sjson.Free;
outjson.Free;
end; end;

由于kbmmw 的数据库存json , 包含了其它信息,我们就把不用的信息干掉。

完成后,运行程序

浏览器中输入对应的URL

http://127.0.0.1/xalionrest/getdata?tname=emp

就得到了输出结果

kbmmw 中简单返回 extjs 数据JSON

其实也是很方便的。