Delphi 实施 REST 服务器

Delphi implement REST server

我在服务器上有一个 mysql 数据库,我使用我编写的脚本在其中插入数据。我必须打开 www.mywebsite.com/rest/create.php?param=value&param2=value2 来创建新资源,然后我必须打开另一个 php 文件来编辑项目等等。这是基本方法:php 文件采用一些参数,然后将文件存储在数据库中。

我正在使用 TIdHTTP 因为我可以做类似的事情:

TIdHTTP1.Get(www.mywebsite.com/rest/create.php?param=value&param2=value2);

create.php 页面正在返回一些用 json 编码的数据。在我的 android 应用程序中,我创建了一个休息客户端,它能够解析为响应 php 页面而收到的 json。例如,如果我调用 .../show.php?id=3,页面的结果是 json 和我的数据;稍后 android 应用程序将解析它们并向用户显示一些结果。


问题

而不是调用 www.mywebsite.com/rest/create.php?param=value¶m2=value2 我希望能够做一些事情像这样 www.mywebsite.com/rest/create/?param=value¶m2=value2。基本上我不想在 *.php 中使用文件名,但我想使用没有文件名的第二种 URI。

问题是这是我第一次,我真的不知道该怎么做。

可能的解决方案。阅读 Expert Delphi 后,我找到了一个可能的解决方案。我可以为 linux 创建一个 WebBroker 服务器(这样我就可以导出 Apache 模块 *.so),实现一些像这样的操作:

当有请求 /rest/create/(使用 OnAction 事件)时,我可以 运行 一个 TIdHTTP1.Get(www.mywebsite.com/rest/create.php?param=value&param2=value2); 并存储结果。通过这种方式,我可以根据需要打开 www.mywebsite.com/rest/create/ 并保存数据。即使在 linux 机器上(作为 apache 模块),indy 也能执行 get 请求吗?我已经看到独立服务器 运行s 在 indy 下,所以我猜 indy 应该能够在 apache 模块上工作。

不幸的是,我对这类事情还很陌生,实际上我也不太知道在网上搜索什么来找到解决方案。我的解决方案可以工作,但我很确定有一个正确的最终有效方法来做到这一点。

注意:这只是我经过一些研究后的一个想法,我不确定这是完成我需要的正确方法。除了做我上面写的,我是否只需要用 PHP 或 Apache 做一些事情?是否有另一种标准(也是最佳)方法来创建 REST 服务?

您的问题不在 Delphi 端,而是在服务器一端。

如果您想要 URL /rest/create/,您只需在服务器上的 "rest" 文件夹下创建一个文件夹 "create",然后将 index.php 文件。

或者您可以使用 URL 在 .htaccess 文件中重写规则。