DelphiXe12创建DataSnap REST Application
服务端:该类型应用可直接部署EXE导云端,指定单页直接写好函数,即可导出。同时自动提供网页版的API文档,并可在线测试写好的接口。也可以向其他语言提供接口。
客户端:可生成调用服务端生成的API接口,无效编程,自动生成。异常方便。
本文为备忘,记录核心步骤,不做过多解释。
服务端:
1.Delphi>DataSnap>DataSnap REST Application
2.Window
3.Stand-alone GUI application
4.VCL application
5.Port
6.按如图勾选,
Authentication认证,由于接口需要登录才能提供,此处勾选认证
Server Methods Class,自动生成方法按理,照着往下写即可
7.TComponent
8.保存路径
向导会自动生成3个PAS文件,其中接口定义在ServerMethodsUnit1中,此处的类TServerMethods1可以改成其他和项目有关的名称,该类将在接口的URL上有所体现,此处我们做一个物联网服务程序,所以改成YZIot。
自动生成的WebModuleUnit1单元包含了认证相关的接口,默认直接返回true,此处可改成根据账号密码查询数据库并返回真假。写个简单的认证代码如下:
procedure TWebModule1.DSAuthenticationManager1UserAuthenticate(Sender: TObject; const Protocol, Context, User, Password: string; var valid: Boolean; UserRoles: TStrings);
begin
if (User='ade') and (Password='ade') then
valid := True
else
valid:=False;
end;
直接运行。启动服务后可以看到登录页面,超链接Server Function可以看到接口单页提供的函数,并可以提交测试。至此服务端完成。
客户端:
正常流程创建VCL APP
窗体上添加控件:
SQLConnection
设置控件属性:
DriverName = 'DataSnap'
'DSAuthenticationUser=ade'
'DSAuthenticationPassword=ade'
'DriverUnit=Data.DBXDataSnap'
'HostName=localhost'
'Port=9999'
'CommunicationProtocol=http'
服务端开启后,右键控件
即可自动生成服务端API对应的函数单页。