没有框架路由REST请求?

时间:2012-12-17 19:58:27

标签: php api rest

我一直在读这篇文章:

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

了解如何构建rest API。有一次它说“假设你已经将你的请求路由到用户的正确控制器”

我一直试图找到一个教程或者说明如何做到这一点的东西,但我读过的所有内容都暗示了一个框架。如果没有框架,我怎么能这样做?

编辑:

我正在编写一个REST API,我可以从另一个应用程序进行交互。我准备好了上面的教程,它主要是有道理的,但我并不完全理解将我的请求路由到用户的正确控制器意味着什么。

2 个答案:

答案 0 :(得分:3)

假设您正在使用Apache,您可以使用mod_rewrite和一些基于PHP的逻辑的组合轻松完成此任务。例如,在.htaccess或vhost定义中,您可以通过单个处理程序路由所有请求,可能是index.php

# Don't rewrite requests for e.g. assets
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*+)$ index.php?q=$1 [L]

...然后在index.php文件中执行以下操作:

$target = $_REQUEST['q'];
/* parse the request and include the appropriate controller PHP */

例如,对/products/1234的请求可能会导致包含controllers/products.php处理程序。然后,该处理程序可以对产品1234采取行动。因为您正在使用REST,所以您不需要关心具有查询字符串参数的原始请求。

有多种方法可以实现您尝试做的事情,这只是其中之一。最终,您所依赖的将取决于您的具体要求。上述模式相当普遍,但许多框架使用它或类似的东西。

干杯

答案 1 :(得分:0)

我认为这是一个术语问题。具有某种泛化水平的每个代码都可以称为“框架”。既然你在询问“路由”,它提供了一个初始化的泛化水平,那么每个实现都会成为一个框架。

如果您不想使用现有的完全成熟的框架,您可以详细说明您自己的轻量级实现。以下是一些文章:

所有这些介绍包括路由机制的解释并演示其实现。

基本上,路由器是应用程序内部的一种内部“DNS”(在比喻意义上)。当请求到达您的站点时,您需要根据该请求属性将其分派给适当的工作者类。这是路由器的任务。