0

根据我所阅读的有关 RESTful 服务的内容,应该能够使用对带有记录 ID 的 URL 的请求来获取“资源”(如数据库记录),如下所示:localhost/my_records/ 1. 访问这样的 URL 将显示一个网页,其中包含 id 1 的记录信息。

我需要在 PHP/Apache/MySQL 中实现类似的东西,但我对这门语言还是比较陌生。我最多可以创建类似 localhost/my_records/index.php?id=1 的东西。

创建 ["/id"] url 似乎需要创建该文件夹。有什么办法可以做到这一点?

4

3 回答 3

1

配置您的网络服务器以通过单个 PHP 脚本路由所有请求。这将允许您解析检索到的 URL。由于您使用的是 Apachemod_rewite是要走的路。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]

这将通过 index.php 路由对不存在的路径/文件的所有请求(如果您希望将任何内容路由到该脚本,请删除第 2 行和第 3 行)。在脚本中,您可以通过以下方式访问访问的 URL$_SERVER['REQUEST_URL']

于 2013-05-07T19:46:06.277 回答
1

你可以拥有一个带有任何类型 URL 的 RESTful 服务,你不需要做一个以 id 结尾的 URL,但是为了方便和良好的设计原则,这种类型的 URL 更好。

否则这种类型的 URL 也称为“友好 URL”,大多数 PHP 框架都提供这种类型的 URL,例如 Symfony、Code Igniter、Laravel... 提供此功能。

如果你想要这种类型的 URL 而不使用任何 PHP 框架,你可以查看这个答案和回复:如何在 php 中创建友好的 URL?

在我看来,实现一个好的 REST Api 的一个好的框架是 Code igniter + Phil Sturgeon Rest Client。更多信息:

于 2013-05-07T19:47:27.950 回答
0

本质上,您正在寻找的是通常称为请求路由的东西。通常这是通过服务器级别和应用程序级别的配置组合来实现的。

  • 某种服务器重定向(使用 RewriteRule 或 FallBackResource 指令)将所有请求(或某种格式的请求)定向到要处理它的单个应用程序资源。
  • 用于解析 URI 和 HTTPS 操作(GET、POST、PUT、DELETE、HEAD 等)并确定如何路由请求的应用程序逻辑(即应该由哪个控制器处理它)
  • 通常有某种逻辑可以根据请求标头中请求的格式(即 JSON/XML/HTML)来格式化响应

有许多可用的 PHP 框架可以执行此操作,至少您可以寻求指导(如果不完全使用它们的话)。

于 2013-05-07T19:51:17.430 回答