This documentation regards version 10.1, however the current version is 10.7.0.
optionalHeaderValue
Description
Traverses the list of request headers with the specified function and extracts the first value the function returns as Some(value)
.
The optionalHeaderValue
directive is similar to the headerValue directive but always extracts an Option
value instead of rejecting the request if no matching header could be found.
Example
- Scala
-
source
def extractHostPort: HttpHeader => Option[Int] = { case h: `Host` => Some(h.port) case x => None } val route = optionalHeaderValue(extractHostPort) { case Some(port) => complete(s"The port was $port") case None => complete(s"The port was not provided explicitly") } ~ // can also be written as: optionalHeaderValue(extractHostPort) { port => complete { port match { case Some(p) => s"The port was $p" case _ => "The port was not provided explicitly" } } } // tests: Get("/") ~> Host("example.com", 5043) ~> route ~> check { responseAs[String] shouldEqual "The port was 5043" } Get("/") ~> Route.seal(route) ~> check { responseAs[String] shouldEqual "The port was not provided explicitly" }
- Java