使用PHP的类似REST的URL

时间:2013-05-07 19:35:43

标签: php apache rest url

根据我所读到的有关RESTful服务的内容,我们应该能够获得一个"资源" (就像数据库记录一样)使用对末尾有记录id的URL的请求,如下所示:localhost / my_records / 1。访问此类URL将显示包含id 1记录信息的网页。

我需要在PHP / Apache / MySQL中实现类似的功能,但我还是比较新的语言。我能创造的最多就是这样 本地主机/ my_records /的index.php?ID = 1。

创建[" / id"]网址似乎需要创建该文件夹。有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:1)

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

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

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

访问访问过的网址

答案 1 :(得分:1)

您可以使用任何类型的URL获得RESTful服务,您不需要在最后使用id做一个URL,但这种类型的URL更方便和良好的设计原则。

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

如果你想要这种类型的URL而不使用任何PHP框架,你可以查看这个答案和答案:How to create friendly URL in php?

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

答案 2 :(得分:0)

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

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

有许多PHP框架可以做到这一点,至少你可以寻求指导(如果不是完全使用它们)。