formField
Description
Allows extracting a single Form field sent in the request. Data posted from HTML Forms is either of type application/x-www-form-urlencoded
or of type multipart/form-data
.
See formFields for an in-depth description.
Example
- Scala
-
source
val route = concat( formField("color") { color => complete(s"The color is '$color'") }, formField("id".as[Int]) { id => complete(s"The id is '$id'") }) // tests: Post("/", FormData("color" -> "blue")) ~> route ~> check { responseAs[String] shouldEqual "The color is 'blue'" } Get("/") ~> Route.seal(route) ~> check { status shouldEqual StatusCodes.BadRequest responseAs[String] shouldEqual "Request is missing required form field 'color'" }
- Java
-
source
import org.apache.pekko.http.javadsl.server.Directives; import static org.apache.pekko.http.javadsl.server.Directives.complete; import static org.apache.pekko.http.javadsl.server.Directives.formField; final Route route = Directives.concat( formField("color", color -> complete("The color is '" + color + "'")), formField(StringUnmarshallers.INTEGER, "id", id -> complete("The id is '" + id + "'"))); // tests: final FormData formData = FormData.create(Pair.create("color", "blue")); testRoute(route) .run(HttpRequest.POST("/").withEntity(formData.toEntity())) .assertEntity("The color is 'blue'"); testRoute(route) .run(HttpRequest.GET("/")) .assertStatusCode(StatusCodes.BAD_REQUEST) .assertEntity("Request is missing required form field 'color'");
1.0.1