0

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

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

例如类Settings中的方法Game

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

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

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

4

1 回答 1

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 注释以创建多个路由到同一方法

于 2012-05-13T15:02:19.203 回答