雷斯特勒自定义路线


Restler custom routes

我们正在探索 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&music=y

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

第一步是从 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注释以创建指向同一方法的多个路由