fra*_*eff 7 routing scala playframework swagger
在play-swagger模块中,我们使用play.routes.compiler.RoutesFileParser来从Play获取所有已注册的路由,并进一步将它们解析为API文档:
val parsedRoutes = RoutesFileParser.parse(new File(app.classloader.getResource(routesFile).toURI))
val routes = parsedRoutes.right.get.collect {
case (route: PlayRoute) => {
logger.debug(s"Adding route '$route'")
Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix + "/") +: route.path.parts)))
}
case (include: PlayInclude) => {
logger.debug(s"Processing route include $include")
parseRoutesHelper(playRoutesClassNameToFileName(include.router), include.prefix)
}
}.flatten
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误:
java.lang.NoClassDefFoundError: play/routes/compiler/RoutesFileParser
似乎RoutesFileParser在Play中变得私密!2.5.
获取所有Play路线的正确方法是什么,如上例所示?
这绝对是一个依赖问题。检查依赖树。
如果尚不存在,请将以下内容添加到构建文件中:
"com.typesafe.play" %% "routes-compiler" % "2.5.0"
Run Code Online (Sandbox Code Playgroud)
然后这将编译并运行良好:
val routesURI = app.classloader.getResource("routes").toURI
val parsedRoutes = play.routes.compiler.RoutesFileParser.parse(new File(routesURI))
println(parsedRoutes)
Run Code Online (Sandbox Code Playgroud)
(其中 app 是 play.api.Application 的运行实例)
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |