DataSanp App与Rest, WebBroker App的区别

 datasnap server :选择这一项,我们得到的将是一个独立EXE的三层服务器应用程序(TCP及HTTP两种模式)

         Tokyo 10.2.2,加上HTTPS,共3中通讯协议。

    ServerContainerUnit1、 TServerContainer1 = class(TDataModule)、基本上有3个控件DSServer1、DSTCPServerTransport1、DSServerClass1、DSHTTPService1: TDSHTTPService;

   ServerMethodsUnit1、 TServerMethods1 = class(TDSServerModule),方法声明

          function EchoString(Value: string): string;

   datasnap WebBroker application :选择这一项我们得到的是一个基于ISAPI的程序,需要把程序发布到IIS 等上面才可以运行

  DataSanp  Rest

    只支持http/https 两种协议。

    ServerContainerUnit1

    ServerMethodsUnit1

    WebModuleUnit1

 2024.11.16 WebModule

delphi 12.2 WEB API服务,推荐使用WebModule,封装以下函数。

File>New>Delphi>Web>Web Service Application>Windows>Stand alone GUI application

选择建立的TWebModule1,窗体设计器,双击,可以建立多个action就是接口,每个action可以设置pathurl路径

function TWebModule1.addActions(actionName: string; MethodType:TMethodType; actionEvent: THTTPMethodEvent): TWebActionItem;
var
  item:TWebActionItem;
begin
  item:=self.Actions.Add;
  item.MethodType:=MethodType;
  item.Name:=actionName;
  item.PathInfo:='/'+actionName;
  item.OnAction:=actionEvent;
end;

self.addActions('EchoString',mtGet,EchoString);
self.addActions('ReverseString',mtGet,ReverseString);
self.addActions('sayHello',mtGet,sayHello);
self.addActions('ServerTime',mtGet,ServerTime);

 

 

procedure EchoString(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure ReverseString(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure sayHello(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure ServerTime(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

按以下Response,填写返回值即可。非常方便。

procedure TWebModule1.EchoString(Sender: TObject; Request: TWebRequest;
  Response: TWebResponse; var Handled: Boolean);
begin
 Response.ContentType:=self.ContentTypeJSON;
 Response.Content:=Request.Content;
end;

 

调用IIS,http://192.168.0.101:8090/dll文件名/接口名称

http://192.168.0.101:8090/ProjectIIS.dll/gettime 

再也不用datasnap里的 改不输出格式,也不用为了post方法加个update前缀,这个update前缀都不敢给人说,post还要加个update前缀才能代表post,方法名几不好辨认。新版本的WEBAPI真是方便及了。

// GetInvocationMetadata.ResponseContentType := 'application/json;charset=utf-8';
// GetInvocationMetadata.ResponseContent := Result;

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/DataSnap_Server_Controls

 

posted on 2016-04-08 15:10  lypzxy  阅读(1049)  评论(0编辑  收藏  举报