首页 > 解决方案 > 如何有条件地在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")
}

在某些运行时条件下,其中一些可能不活跃(例如生产系统与开发系统)。如何启用这种条件?例如,如果有一个“虚拟路径”没有做任何事情,我可以想象用 if-else 对其进行编码。

标签: scalaakkaakka-http

解决方案


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

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

def route =
  concat(activeRoutes:_*)

我更喜欢concat链接~路线。


推荐阅读