Как условно добавить маршруты маршрута в akka-http? - PullRequest
2 голосов
/ 27 апреля 2020

У меня есть ряд путей, которые выглядят так:

path("slides" / Segment) { segment =>
  getFromDirectory(s"${cfg.slidesDir}/$segment")
} ~
path("foo" / Segment) { segment =>
  getFromDirectory(s"${cfg.mypyPursDir}/$segment")
} ~
path("foo" / "images" / Segment) { segment =>
  getFromDirectory(s"${cfg.mypyPursImageDir}/$segment")
}

При определенных условиях выполнения некоторые из них могут быть неактивны (например, производство или система разработки). Как можно включить эту обусловленность? Я могу представить кодирование его с помощью if-else, если был «фиктивный путь», который ничего не делал, например.

1 Ответ

4 голосов
/ 27 апреля 2020

Создайте List всех маршрутов, которые вы хотите, используя стандартную Scala фильтрацию и List строительные операции. Затем используйте concat для создания маршрута, который включает все выбранные маршруты.

val allRoutes: List[Route] = ???
val activeRoutes = allRoutes.filter(???)

def route =
  concat(activeRoutes:_*)

Я предпочитаю concat - ~ для создания цепочек маршрутов.

...