parameterMap • Akka HTTP (original) (raw)

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

source`val 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

source`import static akka.http.javadsl.server.Directives.complete; import static akka.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'");`

Found an error in this documentation? The source code for this page can be found here. Please feel free to edit and contribute a pull request.