recoverRejectionsWith
シグネチャ
説明
低レベルディレクティブ - 低レベルで作業する必要があると確信しない限り、リジェクションハンドラを構築するためのよりよいDSLを提供する:ref: `-handleRejections-`ディレクティブを試してみてください。
内部ルートからのリジェクションを``immutable.Seq[Rejection] ⇒ Future[RouteResult]``関数によって変換します。
:ref:`-recoverRejections-`の非同期版です。
詳細な説明は recoverRejections (このディレクティブの同期版) を参照してください。
注釈
どのようにリジェクションがはたらくのかを知るには、このドキュメントの:ref: `rejections-scala`セクションを読んでください。
例
val authRejectionsToNothingToSeeHere = recoverRejectionsWith { rejections =>
Future {
// imagine checking rejections takes a longer time:
if (rejections.exists(_.isInstanceOf[AuthenticationFailedRejection]))
Complete(HttpResponse(entity = "Nothing to see here, move along."))
else
Rejected(rejections)
}
}
val neverAuth: Authenticator[String] = creds => None
val route =
authRejectionsToNothingToSeeHere {
pathPrefix("auth") {
path("never") {
authenticateBasic("my-realm", neverAuth) { user =>
complete("Welcome to the bat-cave!")
}
}
}
}
// tests:
Get("/auth/never") ~> route ~> check {
status shouldEqual StatusCodes.OK
responseAs[String] shouldEqual "Nothing to see here, move along."
}
Contents