我在Delphi XE3中实现了一个REST服务器API(大约十年来第一次使用Delphi,所以有点生疏).目前它使用Indy服务器进行调试,但最终它将是一个ISAPI DLL.
现在我已经实现了许多TDSServerClass类,并希望在类方法中访问请求头.因此,例如当用户请求mysite.com/datasnap/rest/foo/bar时,我希望能够在名为bar的foo类方法中读取标头.这可能吗?
如果没有,是否可以在传入请求到达REST类方法之前创建传入请求的全局过滤器?我需要检查传入请求的API密钥和用户身份验证,而不确定最佳实现方式.谢谢.
解决方法
我不知道XE3中是否有任何变化,但在XE2中你可以做到以下几点:
uses Web.HTTPApp,Datasnap.DSHTTPWebBroker; function TServerMethods1.EchoString(Value: string): string; var Module: TWebModule; begin Module := GetDataSnapWebModule; Result := Module.Request.RemoteIP + ': ' + Value; end;