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 № 1Esta é 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.