我能否在Delphi 2009中创建一个运行在IIS上的REST Web服务?我已经研究了Web Broker和Web Snap Web Server应用程序,但是目前还无法弄清楚。如果可能,我该怎么做才能让它起作用呢?
我能否在Delphi 2009中创建一个运行在IIS上的REST Web服务?我已经研究了Web Broker和Web Snap Web Server应用程序,但是目前还无法弄清楚。如果可能,我该怎么做才能让它起作用呢?
在 Delphi 中,REST web 服务非常简单...实际上有时候太简单了,它有时会被掩盖在复杂的 WebSnap 演示中。您可以使用 Web broker、WebSnap、Indy、Synapse 或其他通用的 HTTP 服务器组件。我不建议您在第一次尝试 RESTful 的时候使用 WebSnap。我建议您选择 WebBroker,或者更简单的是选择 Indy。
File->New->Other WebBroker->Web Server Application
您可以选择 ISAPI DLL 或 Web App Debugger 来创建应用程序……对于您的第一个应用程序,我建议您选择 WAD 应用程序。(事实上,任何 Web 应用程序都应该从服务器开始 WAD 然后创建一个客户端测试应用程序,以便稍后更轻松地进行调试。)如果您选择 WAD,则给它一个名称 - 比如 MyFirstREST。这将创建一个具有响应任何请求的默认 Web 模块的项目。
右键单击 Web 模块,点击操作编辑器弹出菜单项,并通过自定义 PathInfo 设置创建您的 RESTful 命令。然后,您只需定义事件来响应这些命令。
对于 Indy,只需启动新的 Windows 服务应用程序并在服务数据模块上放置 TidHTTPServer 组件。然后为简单的 HTTP GET 请求 (http://yourserver/customer?id=1) 定义一个 OnCommandGET,也要定义一个 OnCommandOther 处理 POST 请求。
事件中会传入 TIdHTTPResponseInfo 和 TIdHTTPResponseInfo,只需要查看 GET 的 QueryParams,提取传递的参数并填充响应的 ContentStream(或 ContentText),以及 ContentType。
许多有关 REST 实现的教程可以在网上找到 - 其中之一是来自 IBM:http://www.ibm.com/developerworks/webservices/library/ws-restful/
通常情况下,使用RESTful服务器来处理XML请求和响应,但对于如何实现服务器并没有限制。这完全取决于客户端的期望。如果您也控制客户端,则可以通过序列化TObject后代将对象来往传递。