我有一个我之前写过的PHP应用程序,我想添加一个RESTful API。我还想扩展该网站,使其更像是一个Rails应用程序,就您调用的URL来获取系统中的项目而言。用PHP创建一个REST风格的API和网站
有没有办法以Railsy的方式调用PHP中的项目,而无需创建各种文件夹和索引页面?如何在不使用GET查询标记的情况下在PHP中调用信息?
我有一个我之前写过的PHP应用程序,我想添加一个RESTful API。我还想扩展该网站,使其更像是一个Rails应用程序,就您调用的URL来获取系统中的项目而言。用PHP创建一个REST风格的API和网站
有没有办法以Railsy的方式调用PHP中的项目,而无需创建各种文件夹和索引页面?如何在不使用GET查询标记的情况下在PHP中调用信息?
如果你有某种形式的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,将用于加载任何你需要的。
您也可以考虑使用其中一个内置REST支持的PHP框架,例如CakePHP。
最简单的方法可能会使用一个框架,为您提供面向REST的功能。我知道Zend Framework可以通过类Zend_Rest_Server
来实现,它可以轻松创建REST服务器。
我想其他许多框架也一样。但是,如果您已经有了一个不使用框架的应用程序(或基于未嵌入该类的框架),那么一些URLrEwriting规则可以做得很好;但是,如果您已经有一个应用程序不使用框架(或基于不嵌入该类的框架)你只需要更多的工作来将URLS /参数映射到类/方法:-(
respopnse快速注意到Pascal MARTIN:Zend_Rest_Server与REST完全无关,它们只是对RPC做了一些更好的URL并把它称为REST,以便更时髦
如果你想做REST,你需要自己做更多的工作,因为我还没有找到一个好的PHP REST库,所以检查$_SERVER['REQUEST_METHOD']
决定如何处理被叫资源等
您正在寻找的设计模式称为front controller。
以最简单的形式使用mod_rewrite传入传入的请求并将其传递给单个php脚本。然后使用正则表达式解析URL并映射到不同的响应操作。但是,映射现有应用程序可能需要大量重写。
如果你想玩这个概念,我建议Silex microframework。
啊我错了:CakePHP其实对REST来说确实很好。虽然它有一个可怕的ORM层,但确定:-) – skrebbel 2009-07-17 13:14:52