/ / Wildcard Routing to static file in Play 2 - playframework-2.0, url-routing, single-page-application

Roteamento de curingas para arquivo estático no Play 2 - playframework-2.0, roteamento de URL, aplicativo de página única

Estou trabalhando em um Play Framework 2.2 aplicativo que atende a uma API JSON e um aplicativo de página única. Para o aplicativo de página única, estou usando Backbone.js e gostaria de oferecer suporte à API HTML5 History.

Atualmente, o Play está servindo o aplicativo de página única por meio de um arquivo index.html, e todo o roteamento no aplicativo de página única é feito com roteamento baseado em hash. Abaixo está a rota que estou usando:

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

E um URL de amostra que é manipulado pelo aplicativo de página única é:

/app/index.html#/some/url

Eu gostaria de ser capaz de rotear todos URLS que começam com /app/ ao meu arquivo index.html, para que o URL acima se torne o seguinte e ainda seja manipulado pelo meu arquivo index.html:

/app/some/url

Minha ideia era usar uma rota como a seguinte:

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

No entanto, o Play não está feliz por eu não usar a rota "qualquer coisa", então recebo o seguinte erro de compilação: Parâmetro ausente na definição da chamada: qualquer coisa.

Existe alguma maneira no Play 2 de ter uma rota "curinga" como a acima para uma rota único arquivo estático?

Respostas:

3 para resposta № 1

Esta é uma limitação no Play, mas fácil de contornar. Defina uma ação que delega ao controlador de ativos e aceita um parâmetro que ele ignora:

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

Em seguida, aponte sua rota para isso.