handleRejections
Handles rejections produced by the inner route and handles them using the specified RejectionHandler.
Signature
def handleRejections(handler: RejectionHandler): Directive0
Description
Using this directive is an alternative to using a global implicitly defined RejectionHandler that applies to the complete route.
See Rejections for general information about options for handling rejections.
Example
val totallyMissingHandler = RejectionHandler {
case Nil /* secret code for path not found */ =>
complete(StatusCodes.NotFound, "Oh man, what you are looking for is long gone.")
}
val route =
pathPrefix("handled") {
handleRejections(totallyMissingHandler) {
path("existing")(complete("This path exists"))
}
}
Get("/handled/existing") ~> route ~> check {
responseAs[String] === "This path exists"
}
Get("/missing") ~> sealRoute(route) /* applies default handler */ ~> check {
status === StatusCodes.NotFound
responseAs[String] === "The requested resource could not be found."
}
Get("/handled/missing") ~> route ~> check {
status === StatusCodes.NotFound
responseAs[String] === "Oh man, what you are looking for is long gone."
}