Лучший способ заставить одно действие Play Framework 2.6 обрабатывать маршрут без учета его метода HTTP - PullRequest
0 голосов
/ 14 января 2020

У нас есть приложение Play 2.6 Java, которое до сих пор прекрасно работает. Теперь нам нужно добавить к нему какой-нибудь маршрут, который будет просто принимать исходный запрос, украшать его некоторыми дополнительными заголовками или чем-то еще и отправлять его вперед для обработки каким-либо другим приложением (возможно, с использованием клиента Play для WS). Вопрос в том, можно создать какой-то маршрут, подобный этому, в файле «Воспроизвести маршруты»:

* /forward-to-smth/*whatever my.Action.forward

, где * будет соответствовать всем методам HTTP, и мы просто получим экземпляр Http.Request в теле действия и обработайте его как требуется.

Каков наилучший способ обработки этого вида сценария ios в Play? Возможно, мы можем создать несколько записей маршрутов для каждого метода HTTP и несколько действий в контроллере для каждого из методов, делегируя всю обработку одному методу handle-it-all, но есть ли более элегантное решение?

Создание некоторого пользовательского HttpRequestHandler для этого случая, вероятно, будет излишним?

1 Ответ

0 голосов
/ 14 января 2020

Play удобно генерирует роутер из файла маршрутов, но вы также можете написать роутер самостоятельно. См. https://www.playframework.com/documentation/2.6.x/ScalaSirdRouter

class MyRouter @Inject()(controller: MyController) extends SimpleRouter {
  override def routes: Routes = {
    case _ => controller.forward
  }
}

Затем в файле маршрутов добавьте

-> /forward-to-smth  my.MyRouter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...