formFieldMap

Signature

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

Description

Extracts all HTTP form fields at once as a Map[String, String] mapping form field names to form field values.

If form data contain a field value several times, the map will contain the last one.

See formFields for an in-depth description.

Warning

Use of this directive can result in performance degradation or even in OutOfMemoryError s. See formFieldSeq for details.

Example

val route =
  formFieldMap { fields =>
    def formFieldString(formField: (String, String)): String =
      s"""${formField._1} = '${formField._2}'"""
    complete(s"The form fields are ${fields.map(formFieldString).mkString(", ")}")
  }

// tests:
Post("/", FormData("color" -> "blue", "count" -> "42")) ~> route ~> check {
  responseAs[String] shouldEqual "The form fields are color = 'blue', count = '42'"
}
Post("/", FormData("x" -> "1", "x" -> "5")) ~> route ~> check {
  responseAs[String] shouldEqual "The form fields are x = '5'"
}
The source code for this page can be found here.