parameterMap

Signature

def parameterMap: Directive1[Map[String, String]] 

Description

Extracts all parameters at once as a Map[String, String] mapping parameter names to parameter values.

If a query contains a parameter value several times, the map will contain the last one.

See also When to use which parameter directive? to understand when to use which directive.

Example

Scala
Java
sourceval route =
  parameterMap { params =>
    def paramString(param: (String, String)): String = s"""${param._1} = '${param._2}'"""
    complete(s"The parameters are ${params.map(paramString).mkString(", ")}")
  }

// tests:
Get("/?color=blue&count=42") ~> route ~> check {
  responseAs[String] shouldEqual "The parameters are color = 'blue', count = '42'"
}
Get("/?x=1&x=2") ~> route ~> check {
  responseAs[String] shouldEqual "The parameters are x = '2'"
}
sourceimport static org.apache.pekko.http.javadsl.server.Directives.complete;
import static org.apache.pekko.http.javadsl.server.Directives.parameterMap;

final Function<Entry, String> paramString =
    entry -> entry.getKey() + " = '" + entry.getValue() + "'";

final Route route =
    parameterMap(
        params -> {
          final String pString =
              params.entrySet().stream()
                  .map(paramString::apply)
                  .collect(Collectors.joining(", "));
          return complete("The parameters are " + pString);
        });

// tests:
testRoute(route)
    .run(HttpRequest.GET("/?color=blue&count=42"))
    .assertEntity("The parameters are color = 'blue', count = '42'");

testRoute(route).run(HttpRequest.GET("/?x=1&x=2")).assertEntity("The parameters are x = '2'");