我在服务器上有一个 mysql 数据库,我使用我编写的脚本在其中插入数据。我必须打开 www.mywebsite.com/rest/create.php?param=value¶m2=value2
来创建一个新资源,然后我必须打开另一个 php 文件来编辑一个项目等等。这是基本方法:一个 php 文件接受一些参数,然后将文件存储在数据库中。
我正在使用 TIdHTTP
因为我有可能做类似的事情:
TIdHTTP1.Get(www.mywebsite.com/rest/create.php?param=value¶m2=value2);
create.php
页面正在返回一些以 json 编码的数据。在我的 android 应用程序中,我创建了一个 rest 客户端,它能够解析为响应 php 页面而收到的 json。例如,如果我调用 .../show.php?id=3
页面的结果是一个包含我的数据的 json;稍后 Android 应用程序将解析它们并向用户显示一些结果。
问题
而不是调用 www.mywebsite.com/rest/create.php?param=value¶m2=value2 我希望能够做这样的事情www.mywebsite.com/休息/创建/?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¶m2=value2);
并存储结果。通过这种方式,我可以根据需要打开 www.mywebsite.com/rest/create/并保存数据。即使在 linux 机器上(作为 apache 模块),indy 也可以执行 get 请求吗?我已经看到独立服务器在 indy 下运行,所以我猜 indy 应该能够在 apache 模块上工作。
不幸的是,我对这类事情还很陌生,实际上我也真的不知道在网上搜索什么来找到解决方案。我的解决方案可以工作,但我很确定有一个适当的最终有效的方法来做到这一点。
注意:这只是我经过一些研究后的一个想法,我不确定这是完成我需要的事情的正确方法。除了做我上面写的,我是否只需要用 PHP 或 Apache 做一些事情?是否有另一种标准(也是最佳)方法来创建 REST 服务?
最佳答案
您的问题不在 Delphi 端,而是在服务器端。
如果你想要一个 URL/rest/create/,你只需在服务器上的“rest”文件夹下创建一个“create”文件夹,并在上面放一个 index.php 文件。
或者您可以在 .htaccess 文件中使用 URL 重写规则。
关于php - Delphi 实现 REST 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45907219/