2

スプレー (または Akka-Http) から html を提供するときに静的コンテンツが欠落している問題を解決するにはどうすればよいですか? 私のサービスのベース URL は/api(この場合は関係ないはずですが) です。

これが私のルートです

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

ロードされたhtmlは、次のように開くとcssおよびjsファイルを見つけることができます

/api/swagger/

しかし、私が開くとき

/api/swagger(末尾のスラッシュなし)

読み込まれた html からコンテンツを取得しようとします

/api/css/reset.cssそれ以外の/api/swagger/css/reset.css

両方のケースをカバーするには、ルートをどのように書き直す必要がありますか?

4

2 に答える 2

2

最終的にリダイレクトを追加しました。誰かがよりエレガントなソリューションを知っている場合は、投稿してください。

pathPrefix("swagger") {
  CachingDirectives.cachingProhibited {
    pathEnd {
      redirect("/api/swagger/", StatusCodes.TemporaryRedirect)
    } ~
      pathSingleSlash {
        getFromResource("swagger-ui/index.html")
      } ~
      getFromResourceDirectory("swagger-ui")
  }
}
于 2015-01-20T13:32:41.330 に答える
2

redirectToTrailingSlashIfMissing代わりにディレクティブを使用してください。

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

于 2016-09-09T12:28:16.170 に答える