【问题标题】:PHP REST API RoutingPHP REST API 路由
【发布时间】:2011-08-05 15:34:59
【问题描述】:

我一直在研究 API 并为我们正在进行的项目开发 REST API。

API 只接受来自 JSON 格式的一个来源的连接,我理解这有点好。

如果理解大部分内容,但是我不理解下面的第三个代码示例以及路由信息的去向。

他们提供的例子是:

$data = RestUtils::processRequest();

switch($data->getMethod)
{
    case 'get':
        // retrieve a list of users
        break;
    case 'post':
        $user = new User();
        $user->setFirstName($data->getData()->first_name);  // just for example, this should be done cleaner
        // and so on...
        $user->save();
        break;
    // etc, etc, etc...
}

我不确定的部分是如何接受原始请求,即 /get/user/1 - 如何将其路由到脚本的正确部分。

如果还有其他 SO 问题(我已经搜索了很长时间)或任何进一步的教育示例,请务必指出正确的方向。

更新

我在外面找到了一些路由 PHP 类,但没有什么是很小的,并且按照锡上所说的那样做,一切似乎都在做路由 + 2000 其他事情。

我现在有了这个项目所需的所有类,我希望从 URI 访问它们,即:

/数据/用户 /数据/用户/1 /哈希/用户 /哈希/用户/1 /put/users/1?json={数据}

所以所有这些都应该使用 users 类,然后是 data、hash 或 put 方法之一,将其后的任何附加内容作为参数传递给方法。

如果有人能解释一下这部分的工作原理,那将是一个巨大的帮助!

谢谢:)

【问题讨论】:

  • 我不久前写的 This code 可能足够短,可以完全掌握。它执行 REST API 需要执行的所有步骤,包括路由。

标签: php api rest routing


【解决方案1】:

从一开始,您指出的网站似乎不包含路由器或调度程序。有很多 PHP5 框架,其中包括路由和/或调度或一些描述。 (http://en.wikipedia.org/wiki/Comparison_of_Web_application_frameworks#PHP)

路由器将是一个具有预定义路由列表的类,这些路由可能非常基本或非常复杂,这一切都取决于您想要做的事情。一个好的 REST 路由器 IMO 应该是这样的:

:module/:controller/:params

然后路由器会根据 HTTP 请求(GET、POST、PUT、DELETE、OPTIONS)路由到正确的操作

public function getAction($id) {
    // Load item $id
}

【讨论】:

  • 感谢伙计,这让我对需要研究的内容有所了解。我已经对原始版本添加了更新,不确定您是否可以在该部分添加任何灯光?
【解决方案2】:

在你的情况下,你需要一个重定向规则,将请求发送到这样的东西 index.php?user=id。然后就可以处理get请求了。

我发现的 php REST 架构(包括路由)的最佳解决方案是:

http://peej.github.com/tonic/

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 2015-06-05
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2018-03-02
    相关资源
    最近更新 更多