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> 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.

 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

Concise view

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

Filters out empty strings including spaces before decoding

Filters out empty strings including spaces before decoding

Attributes

Source:
FormDataDecoder.scala