org.http4s.dsl.impl
Type members
Classlikes
Path separator extractor: {{{ Path("/1/2/3/test.json") match { case "1" /: "2" /: _ => ... }}}
Helper for the generation of a org.http4s.Response which must contain an Allow header and may contain a body.
A 405 status MUST contain an Allow header, which
distinguishes this from other ResponseGenerators.
Helper for the generation of a org.http4s.Response which will not contain a body
While it is possible to for the org.http4s.Response manually, the EntityResponseGenerators offer shortcut syntax to make intention clear and concise.
- Example
{{{ val resp: F[Response] = Status.Continue() }}}
Helper for the generation of a org.http4s.Response which may contain a body
While it is possible to construct the org.http4s.Response manually, the EntityResponseGenerators offer shortcut syntax to make intention clear and concise.
- Example
{{{ val resp: IO[Response] = Ok("Hello world!") }}}
Integer extractor of a path variable: {{{ Path("/user/123") match { case Root / "user" / IntVar(userId) => ... }}}
Helper for the generation of a org.http4s.Response which may contain a Location header and may contain a body.
A 300, 301, 302, 303, 307 and 308 status SHOULD contain a Location header, which
distinguishes this from other EntityResponseGenerators.
Long extractor of a path variable: {{{ Path("/user/123") match { case Root / "user" / LongVar(userId) => ... }}}
Matrix path variable extractor For an example see MatrixURIs This is useful for representing a resource that may be addressed in multiple dimensions where order is unimportant
{{{
object BoardVar extends MatrixVar("square", List("x", "y")) Path("/board/square;x=5;y=3") match { case Root / "board" / BoardVar(IntVar(x), IntVar(y)) => ... } }}}
- Companion
- object
Capture a query parameter that appears 0 or more times.
{{{ case class Foo(i: Int) implicit val fooDecoder: QueryParamDecoder[Foo] = ... implicit val fooParam: QueryParam[Foo] = ...
object FooMatcher extends OptionalMultiQueryParamDecoderMatcherFoo val routes = HttpRoutes.of { // matches http://.../closest?foo=2&foo=3&foo=4 case GET -> Root / "closest" :? FooMatcher(Validated.Valid(Seq(Foo(2),Foo(3),Foo(4)))) => ...
/* * matches http://.../closest?foo=2&foo=3&foo=4 as well as http://.../closest (no parameters) * or http://.../closest?foo=2 (single occurrence) */ case GET -> Root / "closest" :? FooMatcher(is) => ... }}}
param extractor using org.http4s.QueryParamDecoder. Note that this will always match, but will return an Option possibly containing the result of the conversion to T
{{{ case class Foo(i: Int) implicit val fooDecoder: QueryParamDecoder[Foo] = ...
case class Bar(i: Int) implicit val barDecoder: QueryParamDecoder[Bar] = ...
object FooMatcher extends ValidatingQueryParamDecoderMatcherFoo object BarMatcher extends OptionalValidatingQueryParamDecoderMatcherBar
val routes = HttpRoutes.of { case GET -> Root / "closest" :? FooMatcher(fooValue) +& BarMatcher(barValue) => ^(fooValue, barValue getOrElse 42.right) { (foo, bar) => ... }.fold( nelE => BadRequest(nelE.toList.map(_.sanitized).mkString("\n")), baz => { ... } ) }}}
Helper for the generation of a org.http4s.Response which must contain a Proxy-Authenticate header and may contain a body.
A 407 status MUST contain a Proxy-Authenticate header, which
distinguishes this from other EntityResponseGenerators.
param extractor using QueryParamDecoder: {{{ case class Foo(i: Int) implicit val fooDecoder: QueryParamDecoder[Foo] = ...
object FooMatcher extends QueryParamDecoderMatcherFoo val routes = HttpRoutes.of { case GET -> Root / "closest" :? FooMatcher(2) => ... }}}
param extractor using QueryParamDecoder:
{{{ case class Foo(i: Int) implicit val fooDecoder: QueryParamDecoder[Foo] = ... implicit val fooParam: QueryParam[Foo] = ...
object FooMatcher extends QueryParamDecoderMatcher[Foo] val routes = HttpRoutes.of { case GET -> Root / "closest" :? FooMatcher(2) => ... }}}
UUID extractor of a path variable: {{{ Path("/user/13251d88-7a73-4fcf-b935-54dfae9f023e") match { case Root / "user" / UUIDVar(userId) => ... }}}
param extractor using org.http4s.QueryParamDecoder. Note that this will return a ParseFailure if the parameter cannot be decoded.
{{{ case class Foo(i: Int) implicit val fooDecoder: QueryParamDecoder[Foo] = ...
object FooMatcher extends ValidatingQueryParamDecoderMatcherFoo val routes: HttpRoutes.of = { case GET -> Root / "closest" :? FooMatcher(fooValue) => fooValue.fold( nelE => BadRequest(nelE.toList.map(_.sanitized).mkString("\n")), foo => { ... } ) }}}