parameterMap

Signature

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

Description

Extracts all parameters at once as a Map[String, String]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
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'"
}
Java
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'");