Skip to content

RouteGroup

[Source]

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.

class iso RouteGroup

Constructors

create

[Source]

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

Returns


Public Functions

get

[Source]

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

Returns


post

[Source]

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

Returns


put

[Source]

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

Returns


delete

[Source]

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

Returns


patch

[Source]

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

Returns


[Source]

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

Returns


options

[Source]

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

Returns


route

[Source]

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

Returns


group

[Source]

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.

fun ref group(
  inner: RouteGroup iso)
: None val

Parameters

Returns