使用kbmmw 生成客户端delphi函数原型

时间:2022-05-05 19:10:48

前面我们讲了使用swagger 生成java,php 的客户端调用函数原型。

对于delphi,其实很遗憾,不能直接生成客户端函数原型代码。

不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们就自产自销,

为kbmmw 客户端生成函数原型。也为我们前面说的双引擎提供服务。

闲话少说。

很简单

[kbmMW_Rest('method:get, path: "delphi", responseMimeType:"text/plain"')]
function DelphiAPI:string;
function TkbmMWCustomHTTPSmartService1.DelphiAPI: string;
var
unitName:string;
begin
// Return Delphi client stub unit for all methods in this service marked with
// kbmMW_Method attribute.
// Add 'servers: [ "url1", "url2",.. "urln" ]' to ASettings if you want to
// embed server location information in the comments of the returned unit.
Result:=TkbmMWSmartDelphiStubGenerator.GenerateDelphi('',self,unitName);
SetResponseFileName(unitName); end;

编译,运行。

在浏览器里面输入http://127.0.0.1/xalionrest/delphi

使用kbmmw 生成客户端delphi函数原型

看看我们的函数原型都出来了。

我们把这个文件保存成pas 文件,放到客户端目录。

使用kbmmw 生成客户端delphi函数原型

打开客户端工程。加入生成的单元。

使用kbmmw 生成客户端delphi函数原型

使用kbmmw 生成客户端delphi函数原型

客户端调用代码就非常简单了。

procedure TForm1.Button1Click(Sender: TObject);
var
c:IkbmMWSmartClient;
ca:TkbmMWSmartClientCaller;
s:string;
xalionrest: TXALIONREST;
begin
Transport.Host:=eIP.Text; xalionrest:= TXALIONREST.Create( Transport); s:=xalionrest.EchoString('abc'); memo1.Lines.Add('EchoString(''abc'')='+ s );
s:=xalionrest.version;
memo1.Lines.Add('version='+ s );
s:=xalionrest.AddNumbers(,);
memo1.Lines.Add('AddNumbers(34,7)='+ s );
xalionrest.Free;
end;

使用kbmmw 生成客户端delphi函数原型

还是那么的完美。

我们还可以使用客户端访问服务器端的数据库服务

procedure TForm1.Button2Click(Sender: TObject);
var
xalionrest: TXALIONREST;
begin
Transport.Host:=eIP.Text;
xalionrest:= TXALIONREST.Create( Transport);
try
mt:=xalionrest.querytable('customer','');
mt.Active:=True;
datasource1.DataSet:=mt;
finally
xalionrest.Free;
end; end

运行结果

使用kbmmw 生成客户端delphi函数原型

显示服务端图像

procedure TForm1.BitBtn1Click(Sender: TObject);
var
c:IkbmMWSmartClient;
s:string;
xalionrest: TXALIONREST;
b:Tbytes;
NewG: TJPEGImage; bs:Tbytesstream;
begin
Transport.Host:=eIP.Text; xalionrest:= TXALIONREST.Create( Transport); try
b:=xalionrest.GetImage('Boa') ; bs:=Tbytesstream.Create(b);
newg:=TJPEGImage.Create;
newg.LoadFromStream(bs);
image1.Picture.Graphic.Free;
image1.Picture.Graphic:=newg;
finally
bs.Free;
newg.Free;
xalionrest.Free;
end; end;

使用kbmmw 生成客户端delphi函数原型

不能再简单了,否则大家就要失业了。