Loaded html 从父目录请求静态内容

Loaded html requests static content from parent directory

如何解决从 Spray(或 Akka-Http)服务 html 时缺少静态内容的问题?我服务的基础 url 是 /api(尽管在这种情况下它应该是无关紧要的)。

这是我的路线

get {
  pathPrefix("swagger") {
    pathEndOrSingleSlash {
      getFromResource("swagger-ui/index.html")
    } ~
      getFromResourceDirectory("swagger-ui")
  }
}

Loaded html 打开后可以找到css和js文件

/api/swagger/

但是当我打开

/api/swagger(没有尾部斜杠)

已加载html 尝试从

获取内容

/api/css/reset.css 而不是 /api/swagger/css/reset.css

我应该如何重写我的路线以涵盖这两种情况?

我最终添加了重定向。如果有人知道更优雅的解决方案,请post。

pathPrefix("swagger") {
  CachingDirectives.cachingProhibited {
    pathEnd {
      redirect("/api/swagger/", StatusCodes.TemporaryRedirect)
    } ~
      pathSingleSlash {
        getFromResource("swagger-ui/index.html")
      } ~
      getFromResourceDirectory("swagger-ui")
  }
}

改用 redirectToTrailingSlashIfMissing 指令。

参考:http://doc.akka.io/docs/akka/2.4/scala/http/routing-dsl/directives/path-directives/redirectToTrailingSlashIfMissing.html