2013-08-29 5 views
1

Я пытаюсь динамически определять версию в маршрутизации URI.Play framework: динамическая маршрутизация в зависимости от номера версии

Мои Immidiate идеи были

а) Я настроил в application.conf строку, указав свою текущую версию:

myApp.ver = 0.1 

Я wan't использовать его в файле маршрутов как часть URI, например:

GET /myApp/{version}/welcome controller.myApp.Welcome() 

идея не передать номер версии методы Welcome(), но, чтобы получить вера sion из файла application.conf.

Я искал определение параметров в файле маршрута, но не нашел информации, которая мне помогла.

б) Другая идея состояла в том, чтобы иметь переменную в маршрутах, что-то вроде:

CurrentVersion = 0.1 

в файле маршрутов и использовать его в URI.

Как я могу это решить? Я не нашел примера для этого.

Спасибо.

ответ

0

Если вы хотите сделать это для каждого маршрута, вы должны установить application.baseUrl, чтобы указать номер своей версии. Для этого вы можете определить версию в своем application.conf вместо файла Build.scala, as described here.

myApp.name = myApp 
myApp.ver = 0.1 
application.baseUrl = ${myApp.name}/${myApp.ver} 

Если вы хотите сделать это только для некоторых маршрутов, похоже, это не простое решение. Если бы вы могли игнорировать параметры в маршрутах, я бы сказал, что используйте параметр regexp и проверьте его на своем глобальном маршрутизаторе - к сожалению, это doesn't seem possible, не передавая параметр контроллеру.

Так я вижу два других варианта:

  1. жёстко номер версии в файле маршрутов и сделать поиск и заменить каждый раз, когда она меняется.
  2. Создайте плагин для процесса сборки sbt и позвольте ему заменить версию в файле маршрутов.
0

В Play 1.2.x, в файле conf/routes, добавить маршрут, как это:

GET /myApp/${play.configuration.getProperty("myApp.ver")}/welcome  myApp.Welcome() 
+0

Это дает мне: 'sbt.PlayExceptions $ RoutesCompilationException: Ошибка компиляции [Ожидается идентификатор]'. Я не думаю, что вы можете использовать тот же синтаксис, что и в шаблонах. – Kapep

+0

Мы можем использовать тот же синтаксис, что и шаблоны. Я проверил, что это работает для меня. Я предполагаю версию Play 1.2.x. Для 2.x вам может понадобиться сделать аналогичным образом. –

+0

Вопрос отмечен как игра 2, я посмотрел на парсер парсинга игры 2 и не видел никаких функций для замены таких переменных. – Kapep

Смежные вопросы