【问题标题】:Restler custom routesRestler 自定义路线
【发布时间】:2012-05-09 13:20:49
【问题描述】:

我们正在探索 Restler 框架。我们需要的是一个自定义路由,例如:

[host]/:sessionid/{class}/{method}?param1=x&param2=y

例如Game类中的Settings方法:

<?php
class Game {
    function settings($session, $sound=TRUE, $music=TRUE){
        //
    }
}
?>

应该映射到http://hostname/12435635/game/settings?sound=x&amp;music=y

我们已经设法通过破解routes.php 文件来实现它,但是由于文件是自动生成的,所以这个想法不是很好。那么,是否可以在不破解 Restler 源或修改 routes.php 文件的情况下创建此类路由?

【问题讨论】:

    标签: php url-routing restler


    【解决方案1】:

    第一步是从 URI 中删除类名。可以通过修改addAPIClass语句来实现

    $r->addAPIClass('Game', '');
    

    这会改变自动生成的 uri 结构,如下所示

    http://hostname/settings/12435635/?sound=x&music=y
    

    下一步是通过在api方法中添加PHPDoc注释来手动指定路由,如下所示

    <?php
    class Game {
    
        /**
        * @url GET /:session/game/settings
        */
        function settings($session, $sound=TRUE, $music=TRUE){
            //
        }
    }
    

    这将映射到

    http://hostname/12435635/game/settings?sound=x&music=y
    

    这条路线每次在生产模式下生成时都会添加到routes.php :)

    您可以添加更多 @url cmets 来创建多个路由到同一个方法

    【讨论】:

      猜你喜欢
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多