playframework - 播放路线:将不同文件夹中的资产路由到单独的路径中
问题描述
我开发了一个简单的 Play 应用程序,它使用 AngularJS 作为前端,并使用 SwaggerUI 作为方便的前端来测试 Play 的端点。生成的前端资产的项目结构如下所示:
prj/build
+- ui
| +- dist
| +- <compiled typescript assets into js files>
| +- index.html (which include above js files with relative path)
+- swagger-ui
| +- <swagger-ui.js etc...>
| +- index.html (which include above js files with relative path)
我想要实现的是:
- 将主应用程序的 UI 路由
ui/dist/index.html
到localhost/
- 将应用程序的招摇 UI 路由
swagger-ui/index.html
到localhost/api
但是,播放路线设置让我很头疼:如果我只设置两者之一(要么 要么/
)/api
,它就可以工作。例如
GET /api controllers.Assets.at(path = "/swagger-ui", file = "index.html")
GET /*file controllers.Assets.at(path = "/swagger-ui", file)
很好,我可以看到招摇的 UI;如果我尝试像这样将所有这些组合在一起
GET / controllers.Assets.at(path = "/ui/dist", file = "index.html")
GET /*file controllers.Assets.at(path = "/ui/dist", file) # (1)
GET /api controllers.Assets.at(path = "/swagger-ui", file = "index.html")
GET /api/*file controllers.Assets.at(path = "/swagger-ui", file)
常规应用程序有效,但是Action Not Found
当我尝试访问时我会从 Play 中获得一个,/api
因为(1)
优先;无论我如何改组资产路线,或修改它们的参数,由于其工作原理,我似乎无法让它们都值得Assets.at(...)
。
我想出的最接近的解决方案是覆盖默认的 SwaggerUI index.html,并在每个 js 资源路径前加上swagger-ui/
前缀;这样,主应用程序 UI 和 swagger ui 都可以工作,但感觉有点 hackish。
有没有办法使用正确的播放路线语法正确地实现这一点?或者可能定义两个资产控制器,一个用于主应用程序,一个用于 swagger-ui?
谢谢!
解决方案
推荐阅读
- r - 如何在ggplot中绘制表格对象
- javascript - 打开图片时如何读取图片的尺寸?
- python - 如何根据其他列的平均值创建多列
- curl - 无法使用 GitHub API v3 为组织存储库创建问题
- php - 在 xampp 3.2.2 和 php 7.2.10 中安装作曲家有问题
- reactjs - Babel 插件类属性 – React 箭头函数
- android-studio - 无法在 android studio 中使用我的小米米 A1
- sql - 从sql plus中的字符串中删除第一个字符
- python-3.x - 尝试获取字典以将项目添加为列表被迭代,但不起作用。有没有办法来解决这个问题?
- database - SQL Server Management Studio 2014 已安装 我该如何解决此问题?