前面咱們講了使用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;
不能再簡單了,不然你們就要失業了。