前面咱们讲了使用swagger 生成java,php 的客户端调用函数原型。php
对于delphi,其实很遗憾,不能直接生成客户端函数原型代码。java
没关系,解铃还须系铃人,既然是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;
编译,运行。this
在浏览器里面输入http://127.0.0.1/xalionrest/delphiurl
看看咱们的函数原型都出来了。spa
咱们把这个文件保存成pas 文件,放到客户端目录。3d
打开客户端工程。加入生成的单元。
客户端调用代码就很是简单了。
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(34,7); memo1.Lines.Add('AddNumbers(34,7)='+ s ); xalionrest.Free; end;
仍是那么的完美。
咱们还能够使用客户端访问服务器端的数据库服务
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
运行结果
显示服务端图像
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;
不能再简单了,不然你们就要失业了。