obl*_*ion 4 scala playframework
我的play 2.4.x应用程序中有很多控制器.
我想得到一个all route URLs
指向各自控制器的列表.我知道如何从当前请求中获取URL.但我需要一个播放应用程序中可用的所有URL列表.我想generate this list dynamically because URLs can be changed/added/deleted in future
.
那么,有什么方法可以动态生成这个URL列表?或者我是否有义务将所有URL静态存储在缓存或字典中的某个位置?
我使用Router traitdocumentation
提供的方法获得了所需的列表.文档方法返回.每个元组都有以下格式:Seq[(String, String, String)]
({http-method},{url},{controller method})
该路由器特点是所有自动生成的扩展Routes.scala
类.Scala编译器Routes.scala
为routes
应用程序中的每个文件生成一个单独的文件.这些自动生成的Routes.scala
文件实现了Router trait的所有方法,包括我们上面讨论过的文档方法.
因此,要获取所有URL的列表,我只需要inject the Router trait
访问documentation method
:
import play.api.routing.Router
class MyClass @Inject()(router: Router) {
def getAllURLs:Seq[String] = router.documentation.map(k => k._2)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1195 次 |
最近记录: |