headerValueByName
Signature
def headerValueByName(headerName: Symbol): Directive1[String]
def headerValueByName(headerName: String): Directive1[String]
Description
Extracts the value of the HTTP request header with the given name.
If no header with a matching name is found the request is rejected with a MissingHeaderRejection
MissingHeaderRejection
.
If the header is expected to be missing in some cases or to customize handling when the header is missing use the optionalHeaderValueByName directive instead.
Example
- Scala
-
source
val route = headerValueByName("X-User-Id") { userId => complete(s"The user is $userId") } // tests: Get("/") ~> RawHeader("X-User-Id", "Joe42") ~> route ~> check { responseAs[String] shouldEqual "The user is Joe42" } Get("/") ~> Route.seal(route) ~> check { status shouldEqual BadRequest responseAs[String] shouldEqual "Request is missing required HTTP header 'X-User-Id'" }
- Java
-
source
import static akka.http.javadsl.server.Directives.complete; import static akka.http.javadsl.server.Directives.headerValueByName; final Route route = headerValueByName("X-User-Id", userId -> complete("The user is " + userId) ); // tests: final RawHeader header = RawHeader.create("X-User-Id", "Joe42"); testRoute(route).run(HttpRequest.GET("/").addHeader(header)) .assertEntity("The user is Joe42"); testRoute(route).run(HttpRequest.GET("/")) .assertStatusCode(StatusCodes.BAD_REQUEST) .assertEntity("Request is missing required HTTP header 'X-User-Id'");