mapRequestContext

Signature

def mapRequestContext(f: RequestContext 

Description

Transforms the RequestContextRequestContext before it is passed to the inner route.

The mapRequestContext directive is used as a building block for Custom Directives to transform the request context before it is passed to the inner route. To change only the request value itself the mapRequest directive can be used instead.

See Request Transforming Directives for an overview of similar directives.

Example

Scala
sourceval replaceRequest =
  mapRequestContext(_.withRequest(HttpRequest(HttpMethods.POST)))

val route =
  replaceRequest {
    extractRequest { req =>
      complete(req.method.value)
    }
  }

// tests:
Get("/abc/def/ghi") ~> route ~> check {
  responseAs[String] shouldEqual "POST"
}
Java
sourceimport static org.apache.pekko.http.javadsl.server.Directives.complete;
import static org.apache.pekko.http.javadsl.server.Directives.extractRequest;
import static org.apache.pekko.http.javadsl.server.Directives.mapRequestContext;

final Route route =
    mapRequestContext(
        ctx -> ctx.withRequest(HttpRequest.create().withMethod(HttpMethods.POST)),
        () -> extractRequest(req -> complete(req.method().value())));

// tests:
testRoute(route).run(HttpRequest.GET("/abc/def/ghi")).assertEntity("POST");