我们正在探索 Restler 框架。我们需要的是自定义路由,例如:
[host]/:sessionid/{class}/{method}?param1=x¶m2=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注释以创建指向同一方法的多个路由