Packages

sealed trait FormDataDecoder[A] extends AnyRef

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

Source
FormDataDecoder.scala
Examples:
  1. scala> import cats.syntax.all._
    scala> import cats.data._
    scala> import org.http4s.FormDataDecoder._
    scala> import org.http4s.ParseFailure
    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.

  2. ,
  3. 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

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FormDataDecoder
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def apply(data: Map[String, Chain[String]]): ValidatedNel[ParseFailure, A]

Concrete Value Members

  1. def mapValidated[B](f: (A) ⇒ ValidatedNel[ParseFailure, B]): FormDataDecoder[B]
  2. def sanitized: FormDataDecoder[A]

    Filters out empty strings including spaces before decoding