mapRouteResultFuture

mapRouteResultFuture

シグネチャ

説明

:ref:`-mapRouteResult-`の非同期版です。

:ref:`-mapRouteResultWith-`と同様ですが、``RouteResult ⇒ Future[RouteResult]``のかわりに``Future[RouteResult] ⇒ Future[RouteResult]``として、複数の変換を組み合わせたり、失敗したルート結果から``recover``することを望む場合に役立ちます。

同様のディレクティブは:ref:`Result Transformation Directives`を参照してください。

val tryRecoverAddServer = mapRouteResultFuture { fr =>
  fr recover {
    case ex: IllegalArgumentException =>
      Complete(HttpResponse(StatusCodes.InternalServerError))
  } map {
    case Complete(res) => Complete(res.addHeader(Server("MyServer 1.0")))
    case rest          => rest
  }
}

val route =
  tryRecoverAddServer {
    complete("Hello world!")
  }

// tests:
Get("/") ~> route ~> check {
  status shouldEqual StatusCodes.OK
  header[Server] shouldEqual Some(Server("MyServer 1.0"))
}

Contents