headerValueByType
Description
Traverses the list of request headers and extracts the first header of the given type.
The headerValueByType
directive finds a header of the given type in the list of request header. If no header of the given type is found the request is rejected with a MissingHeaderRejection
.
If the header is expected to be missing in some cases or to customize handling when the header is missing use the optionalHeaderValueByType directive instead.
Note
Custom headers will only be matched by this directive if they extend ModeledCustomHeader
from the Scala DSL and there is currently no API for the Java DSL (Ticket #20415)
Example
final Route route = headerValueByType(Origin.class, origin ->
complete("The first origin was " + origin.getOrigins().iterator().next())
);
// tests:
final Host host = Host.create("localhost", 8080);
final Origin originHeader = Origin.create(HttpOrigin.create("http", host));
testRoute(route).run(HttpRequest.GET("abc").addHeader(originHeader))
.assertEntity("The first origin was http://localhost:8080");
testRoute(route).run(HttpRequest.GET("abc"))
.assertStatusCode(StatusCodes.BAD_REQUEST)
.assertEntity("Request is missing required HTTP header 'Origin'");