FormDataDecoder

org.http4s.FormDataDecoder
See theFormDataDecoder companion object
sealed trait FormDataDecoder[A]

A decoder ware that uses QueryParamDecoder to decode values in org.http4s.UrlForm

Attributes

Example

scala> import cats.syntax.all._
scala> import cats.data._
scala> import org.http4s.FormDataDecoder._
scala> case class Foo(a: String, b: Boolean)
scala> case class Bar(fs: List[Foo], f: Foo, d: Boolean)
scala>
scala> implicit val fooMapper: FormDataDecoder[Foo] = (
    |   field[String]("a"),
    |   field[Boolean]("b")
    | ).mapN(Foo.apply)
scala>
scala> val barMapper = (
    |   list[Foo]("fs"),
    |   nested[Foo]("f"),
    |   field[Boolean]("d")
    | ).mapN(Bar.apply)
scala>
scala> barMapper(
    |   Map(
    |    "fs[].a" -> Chain("a1", "a2"),
    |    "fs[].b" -> Chain("true", "false"),
    |    "f.a" -> Chain("fa"),
    |    "f.b" -> Chain("false"),
    |    "d" -> Chain("true"))
    | )
res1: ValidatedNel[ParseFailure, Bar] = Valid(Bar(List(Foo(a1,true), Foo(a2,false)),Foo(fa,false),true))

The companion object provides a EntityDecoder from HTML form parameters.

import org.http4s.FormDataDecoder.formEntityDecoder
HttpRoutes
 .of[F] {
   case req @ POST -> Root =>
     req.as[MyEntity].flatMap { entity =>
       Ok()
     }
 }

For more examples, check the tests https://github.com/http4s/http4s/blob/main/tests/src/test/scala/org/http4s/FormDataDecoderSpec.scala

Companion
object
Source
FormDataDecoder.scala
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Value members

Abstract methods

Concrete methods

Implicitly added by FormDataDecoderSyntax

Use a default value when the field is missing

Use a default value when the field is missing

Attributes

Source
FormDataDecoder.scala
Implicitly added by FormDataDecoderSyntax

Attributes

Source
FormDataDecoder.scala
Implicitly added by FormDataDecoderSyntax

Attributes

Source
FormDataDecoder.scala

Filters out empty strings including spaces before decoding

Filters out empty strings including spaces before decoding

Attributes

Source
FormDataDecoder.scala