getFromDirectory不是在阿卡-HTTP工作路线

问题描述 投票:0回答:1

我有一个包含root和其他资源,如index.html文件的文件夹.css

现在,我尝试使用下面的阿卡-HTTP路线(localhost:8080/test)在myRoute主办此文件夹。此外,我想在localhost:8080举办一个hello世界页。我也喜欢以斜线的URI来重定向到非削减的URI(localhost:8080/test应等于localhost:8080/test/)。

不知怎的,我无法做到这一点。问候世界的页工作正常,但文件夹没有主持。我得到的是一个The requested resource could not be found.消息(在Chrome)。

def route: Route = {
  redirectToNoTrailingSlashIfPresent(StatusCodes.Found) {
    (pathSingleSlash {
      get {
        complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, homeHtml)) // "hello world"
      }
    }
    ~
      pathPrefix("test") {
           getFromDirectory("root") // contains the index.html
    })
  }
}

编辑:

当我尝试使用,而不是getFromFile(webDir + "/index.html")getFromDirectory(webDir)webDir)的root加载index.html但不能访问的CSS / JS文件。

scala akka akka-http
1个回答
1
投票

我搬到redirectToTrailingSlashIfMissing到内部指令。这似乎是你想要做什么。请注意,webdir是与index.html文件夹的绝对路径

val webdir = "/Users/<your_absolute_path>/root"
  val homeHtml = "homeHtml"
  def route =
    concat(
      pathSingleSlash {
        get {
          complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, homeHtml)) // "hello world"
        }
      },
      (get & pathPrefix("test")) {
        (pathEndOrSingleSlash & redirectToTrailingSlashIfMissing(StatusCodes.TemporaryRedirect)) {
          getFromFile(s"$webdir/index.html")
        } ~ {
          getFromDirectory(webdir)
        }
      }
    )
© www.soinside.com 2019 - 2024. All rights reserved.