Application¶
The public API for the Hobby web framework.
Register routes via .> method chaining (get, post, etc.), then call
serve() to freeze the routes and start listening.
use hobby = "hobby"
use stallion = "stallion"
use lori = "lori"
actor Main
new create(env: Env) =>
let auth = lori.TCPListenAuth(env.root)
hobby.Application
.>get("/", HelloHandler)
.>get("/greet/:name", GreetHandler)
.serve(auth, stallion.ServerConfig("localhost", "8080"), env.out)
Route methods are fun ref — automatic receiver recovery allows calling
them on an iso receiver since all arguments are val. Use .> to chain
route calls (it discards the method's return and passes the receiver
through). Call .serve() last — it consumes the Application and freezes
the routes.
Constructors¶
create¶
Returns¶
- Application iso^
Public Functions¶
get¶
Register a GET route.
fun ref get(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
post¶
Register a POST route.
fun ref post(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
put¶
Register a PUT route.
fun ref put(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
delete¶
Register a DELETE route.
fun ref delete(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
patch¶
Register a PATCH route.
fun ref patch(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
head¶
Register a HEAD route.
fun ref head(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
options¶
Register an OPTIONS route.
fun ref options(
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
route¶
Register a route with an arbitrary HTTP method.
fun ref route(
method: Method val,
path: String val,
handler: Handler val,
middleware: (Array[Middleware val] val | None val) = reference)
: None val
Parameters¶
- method: Method val
- path: String val
- handler: Handler val
- middleware: (Array[Middleware val] val | None val) = reference
Returns¶
- None val
add_middleware¶
Add application-level middleware that runs before every route's middleware.
Can be called multiple times — middleware accumulates in registration order. Application middleware runs before group middleware, which runs before per-route middleware.
Parameters¶
- middleware: Array[Middleware val] val
Returns¶
- None val
group¶
Consume a route group, flattening its routes into this application.
The group's prefix and middleware are applied to each of its routes. The group is consumed — no further registration on it is possible.
Parameters¶
- g: RouteGroup iso
Returns¶
- None val
serve¶
Freeze routes and start listening for HTTP connections.
Consumes the Application — no further route registration is possible after this call.
Parameters¶
- auth: TCPListenAuth val
- config: ServerConfig val
- out: OutStream tag
Returns¶
- None val