首页 > 解决方案 > akka http Route orElse

问题描述

使用 akka http,我getFromDirectory()用来提供目录中的文件。我怎么能说如果在目录中找不到请求的文件,则将其查看到另一个目录?

像这样的东西:

lazy val userRoutes: Route = 
  pathPrefix("files") {
    getFromDirectory("./static")
    .orElse(getFromDirectory(".generated1"))  // this orElse function does not exist. how to achive something like this?
    .orElse(getFromDirectory(".generated2"))  // this orElse function does }

标签: akka-http

解决方案


你可以有这样的东西

  val route =
      pathPrefix("prefix") {
        List("/tmp", "/home/john", "/home/john/Downloads/").map(getFromDirectory).reduceLeft(_ ~ _)
      }

在这里,它为所有文件夹组成路由,并且由于它reject在找不到文件时使用,它将回退到下一个路由

您可以reduceLeftgetFromBrowseableDirectories


推荐阅读