Akka-HTTP(2.4.7)からフロントエンドにアクセスできるようにしようとしています。すべては通常のルートでうまく動作しますが、HTML5 PushStateサポートを有効にする方法を理解できません。私の最善の試みは、RejectionHandlerとhandleRejectionディレクティブを使用することでした。拒否からのAkka-HTTPリカバリ(HTML5履歴APIルーティング用)
誰でもそれを正しく得るための提案はありますか?
def router = pathPrefix("") {
get {
pathEndOrSingleSlash {
getFromDirectory("app/index.html")
} ~ handleRejections(RejectionHandler.newBuilder().handleNotFound {
println("REJECTION!!!!!!!!")
// should be something else?
getFromDirectory("app/index.html")
}.result()) {
getFromDirectory("app")
}
}
}
私は、ルートpath("/")
から静的コンテンツを提供していますが、私は、リソースが見つからない場合回復します。たとえば、私のアプリケーションはHTML5のpushstateを使って表示するコンテンツを決定します。私の理解では、資産(js、css、画像、ectなど)に解決されないルートはHTMLファイル(index.html)を提供する必要があります。
ktosoのアドバイスに続いて、私はコードをリファクタリングし、ドキュメントに従っています...コーナーをカットすることなく、作業バージョンの答えを見てください。
私はあなたがコードから何を期待しているのかよく分かりません。 AFAICSの状態をプッシュすることと何ら関係がなく、誤った拒否を使用しています。ドキュメントhttp://doc.akka.io/docs/akka/2.4.8/scala/http/routing-dslを参照してください。 /directives/execution-directives/handleRejections.html#handlerejections –