Skip to content
Darren Gibson edited this page Apr 19, 2020 · 12 revisions

Rho: A DSL for building HTTP services with http4s

new RhoRoutes[IO] {
  GET / "hello" |>> { () => Ok("Hello, world!") }
}

What distinguishes rho from the http4s-core dsl?

  • The http4s-core dsl defines routes in terms of partial functions using pattern matching extractors while rho uses a set of 'rules' to match and extract information from the request.
  • Rho maintains meta data such as the names of extracted parameters and their types which can be reused for tasks such as generation of Swagger documentation.
  • Rho routing is implemented as an efficient tree structure as opposed to a linear search.

How does rho compare other Scala http frameworks?

  • Rho is similar in intention to the red-eyes project: maintaining metadata.
  • Rho route definition feels similar to Finch and Scalatra.