【问题标题】:Creating a RESTful API and website with PHP使用 PHP 创建 RESTful API 和网站
【发布时间】:2009-07-17 04:04:02
【问题描述】:

我有一个我之前编写的 PHP 应用程序,我想向其中添加一个 RESTful API。我还想扩展站点,使其在您调用以获取系统中的项目的 URL 方面更像 Rails 应用程序。

有没有什么方法可以在不创建各种文件夹和索引页面的情况下以 Railsy 方式调用 PHP 中的项目?如何在不使用 GET 查询标签的情况下调用 PHP 中的信息?

【问题讨论】:

    标签: php ruby-on-rails url rest get


    【解决方案1】:

    如果你有某种形式的 mod_rewrite,你可以用一个 .htaccess 文件很容易地做到这一点。

    如果你有这样的事情:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    

    它将检查您尝试访问的文件是否不存在。 (假设您有一个 hello.html 文件,您仍然需要人们通过 http://yoursite.com/hello.html 访问)

    然后,如果该文件不存在,它将加载您的 index.php 文件,其中 URL 的其余部分存储在 url 变量中。

    这意味着你可以调用类似http://yoursite.com/pages/edit/24 的东西,它会在 url 变量中加载带有 /pages/edit/24 的 index.php。

    这应该让你开始,你不需要各种文件夹和索引页面,只需要 mod_rewrite、.htaccess 文件和一个 index.php 来加载你需要的任何东西。

    【讨论】:

    • 如何仅对 yoursite.com/api 文件夹执行此操作?
    【解决方案2】:

    您还可以考虑使用具有内置 REST 支持的 PHP 框架之一,例如 CakePHP

    【讨论】:

      【解决方案3】:

      回复 Pascal MARTIN 的快速说明:Zend_Rest_Server 与 REST 完全无关。他们只是使用更好的 URL 进行 RPC,并将其称为 REST,这样它就更时尚了。

      如果你想做 REST,你需要自己做更多的工作,因为我还没有找到一个好的 PHP REST 库。所以检查$_SERVER['REQUEST_METHOD'] 来决定如何处理被调用的资源等等。

      【讨论】:

      • 啊,我错了:CakePHP 实际上在 REST 方面做得很好。虽然它有一个可怕的 ORM 层,但没关系 :-)
      【解决方案4】:

      最简单的方法可能是使用为您提供面向 REST 的功能的框架。我知道 Zend 框架通过 Zend_Rest_Server 类做到了这一点,它允许轻松创建 REST 服务器。

      我想许多其他框架也这样做。

      但是,如果您已经有一个不使用框架的应用程序(或者基于不嵌入此类类的框架),那么几个 URLrEwriting 规则就可以了;你只需要做更多的工作来将 URLS/参数映射到类/方法:-(

      【讨论】:

        【解决方案5】:

        您正在寻找的设计模式称为front controller

        在其最简单的形式中,您使用 mod_rewrite 传递传入请求并将其传递给单个 php 脚本。然后使用正则表达式解析 url 并映射到不同的响应操作。但是映射现有应用程序可能需要大量重写。

        如果你想玩转这个概念,我推荐Silex 微框架。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-17
          • 2017-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-15
          相关资源
          最近更新 更多