optionalHeaderValueByType

Description

Optionally extracts the value of the HTTP request header of the given type.

The optionalHeaderValueByType directive is similar to the headerValueByType directive but always extracts an Optional value instead of rejecting the request if no matching header could be found.

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)

To learn more about defining custom headers, read: Custom Headers.

Example

final Route route = optionalHeaderValueByType(Origin.class, origin -> {
  if (origin.isPresent()) {
    return complete("The first origin was " + origin.get().getOrigins().iterator().next());
  } else {
    return complete("No Origin header found.");
  }
});

// tests:

// extract Some(header) if the type is matching
Host host = Host.create("localhost", 8080);
Origin originHeader = Origin.create(HttpOrigin.create("http", host));
testRoute(route).run(HttpRequest.GET("abc").addHeader(originHeader))
  .assertEntity("The first origin was http://localhost:8080");

// extract None if no header of the given type is present
testRoute(route).run(HttpRequest.GET("abc")).assertEntity("No Origin header found.");
The source code for this page can be found here.