RouteGroup¶
A group of routes sharing a common path prefix and optional interceptors.
Route groups let you factor out repeated prefixes and interceptors instead of attaching them to every route individually. Groups can be nested — inner groups inherit the outer group's prefix and interceptors, with the outer interceptors running first.
let auth_interceptors: Array[hobby.RequestInterceptor val] val =
recover val [as hobby.RequestInterceptor val: AuthInterceptor] end
let api = hobby.RouteGroup("/api" where interceptors = auth_interceptors)
api.> get("/users", users_factory)
api.> get("/users/:id", user_factory)
app.> group(consume api)
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. Pass the group to Application.group() or an outer
RouteGroup.group() when done — this consumes the group and flattens its
routes.
Constructors¶
create¶
Create a route group with a path prefix and optional interceptors.
The prefix must be a static path segment — no :param or *wildcard
characters. This is validated at build() time and reported as a
ConfigError. The prefix is prepended to every route path in the group.
Request interceptors, if provided, run before each route's own
interceptors. Response interceptors, if provided, run before each
route's own response interceptors.
new iso create(
prefix: String val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: RouteGroup iso^
Parameters¶
- prefix: String val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- RouteGroup iso^
Public Functions¶
get¶
Register a GET route.
fun ref get(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
post¶
Register a POST route.
fun ref post(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
put¶
Register a PUT route.
fun ref put(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
delete¶
Register a DELETE route.
fun ref delete(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
patch¶
Register a PATCH route.
fun ref patch(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
head¶
Register a HEAD route.
fun ref head(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
options¶
Register an OPTIONS route.
fun ref options(
path: String val,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor 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,
factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val,
interceptors: (Array[RequestInterceptor val] val | None val) = reference,
response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference)
: None val
Parameters¶
- method: Method val
- path: String val
- factory: {(HandlerContext iso): (HandlerReceiver tag | None)} val
- interceptors: (Array[RequestInterceptor val] val | None val) = reference
- response_interceptors: (Array[ResponseInterceptor val] val | None val) = reference
Returns¶
- None val
group¶
Consume a nested route group, flattening its routes into this group.
The inner group's prefix is appended to this group's prefix, and the inner group's interceptors are preserved separately for tree building. The inner group is consumed — no further registration on it is possible.
Parameters¶
- inner: RouteGroup iso
Returns¶
- None val