如何在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
而不是 ~
。
我有一系列看起来像这样的路径;
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
而不是 ~
。