【问题标题】:Wildcard Routing to static file in Play 2通配符路由到 Play 2 中的静态文件
【发布时间】:2014-08-19 08:02:24
【问题描述】:

我正在开发一个同时提供 JSON api 和单页应用程序的 Play Framework 2.2 应用程序。对于单页应用,我使用的是 Backbone.js,我想支持 HTML5 History api。

目前,Play 通过 index.html 文件为单页应用程序提供服务,并且单页应用程序中的所有路由都是通过基于哈希的路由完成的。以下是我正在使用的路线:

GET   /app/*file   controllers.Assets.at(path="/public/app/src", file)

单页应用处理的示例 URL 是:

/app/index.html#/some/url

我希望能够将 all/app/ 开头的 URL 路由到我的 index.html 文件,这样上述 URL 将变为以下 URL,并且仍由我的索引处理.html 文件:

/app/some/url

我的想法是使用如下路线:

GET   /app/*anything   controllers.Assets.at(path="/public/app/src", file="index.html")

但是,Play 对我不使用“anything”路由不满意,所以我收到以下编译错误:Missing parameter in call definition: anything

在 Play 2 中是否有任何方法可以有一个“通配符”路由,如上述路由到 单个静态文件

【问题讨论】:

    标签: playframework-2.0 url-routing single-page-application


    【解决方案1】:

    这是 Play 中的一个限制,但很容易解决。定义一个委托给资产控制器并接受它忽略的参数的操作:

    def index(path: String) = controllers.Assets.at(path="/public/app/src", file="index.html")
    

    然后将你的路线指向那里。

    【讨论】:

    • 效果很好!这似乎是播放路由器应该容纳它的常见情况,但我不能要求更简单的解决方法。谢谢!
    猜你喜欢
    • 2012-04-05
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多