3

playframework 2 scala 中 play.mvc.Router.routes 的等价物是什么?

在 playframework 1.x 中,我可以迭代控制器中的可用路由:

for(Route route:Router.routes){
    ...
}

我将如何使用 playframework 2 scala 做到这一点?

未找到的开发模式模板似乎能够遍历它们,但我需要在控制器中执行此操作。

4

1 回答 1

8

Play 2.0 无法做到这一点。

路由被定义为PartialFunction[RequestHeader, Handler],没有办法知道这个函数的域。

尽管如此,如not found模板所示,您可以检索有关应用程序路由的一些信息:Play 2.0 路由器生成一个documentation字段,返回应用程序的每个路由、其 HTTP 方法(GETPUT等)、其路径模式和最后是写入conf/routes文件中的调用。

路由器会生成一个Routes对象,该对象在您的 Play 应用程序启动时加载,您可以按如下方式访问它:

for {
  routes <- play.api.Play.current.routes.toList
  (method, pattern, call) <- routes.documentation
} yield {
  …
}
于 2012-05-10T18:11:47.733 回答