如何在akka-http中有条件地添加路由路径?

How to conditionally add route paths in akka-http?

我有一系列看起来像这样的路径;

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")
}

在某些运行时条件下,其中一些可能不活跃(例如生产系统与开发系统)。如何实现这种条件性?例如,如果 "dummy path" 没有做任何事情,我可以想象用 if-else 对其进行编码。

使用标准 Scala 过滤和 List 构建操作创建您想要的所有路由的 List。然后使用 concat 创建一条包含所有选定路线的路线。

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

def route =
  concat(activeRoutes:_*)

对于链接路由,我更喜欢 concat 而不是 ~