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

前面我们讲了使用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

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

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

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

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

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;

 

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

原文地址:https://www.cnblogs.com/xalion/p/10320313.html