温馨提示:本文翻译自stackoverflow.com,查看原文请点击:scala - How to get list of all Route URL strings in play framework?
playframework scala

scala - 如何在播放框架中获取所有Route URL字符串的列表?

发布于 2020-03-27 12:00:48

我的播放2.4.x应用程序中有很多控制器

我想获得一个all route URLs指向各自控制器的列表我知道如何从当前请求中获取URL。但是我需要一个播放应用程序中所有可用URL的列表generate this list dynamically because URLs can be changed/added/deleted in future

那么,有什么方法可以动态生成此URL列表吗?还是我有义务将所有URL静态存储在缓存或字典中的某个位置?

查看更多

查看更多

提问者
oblivion
被浏览
140
oblivion 2017-06-21 15:04

我使用Router traitdocumentation提供方法获得了所需的列表documentation方法返回。这里每个元组具有以下格式:Seq[(String, String, String)]

({http-method},{url},{controller方法})

路由器特点是所有自动生成的扩展Routes.scala类。Scala编译器Routes.scalaroutes应用程序中的每个文件生成了单独文件。这些自动生成的Routes.scala文件实现了路由器特性的所有方法,包括我们上面讨论的文档方法。

因此,要获取所有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)
}