9 Dispatch🔗
This module provides syntax for building a role-aware dispatch
procedure and dispatcher combinators.
|
|
dispatch-clause | | = | | [dispatch-pattern | maybe-method | maybe-roles | maybe-name | dispatch-proc] |
| | | | | | dispatch-pattern | | = | | () | | | | | | (string . dispatch-pattern) | | | | | | (bidi-match-expander ... . dispatch-pattern) | | | | | | (bidi-match-expander . dispatch-pattern) | | | | | | maybe-method | | = | | | | | | | | #:method method | | | | | | maybe-roles | | = | | | | | | | | #:roles (role-id ...) | | | | | | maybe-name | | = | | | | | | | | #:name name-expr | | | | | | maybe-else-clause | | = | | | | | | | | [else else-proc] | | | | | | method | | = | | match-pattern |
|
|
|
A variant of
dispatch-rules where each
dispatch-clause takes an optional list of roles and an
optional name.
Returns three values: a dispatcher procedure as in
dispatch-rules, a procedure that can generate reverse URIs
and a procedure that, given a request, can return the
required set of roles for the matching dispatch-proc.
Reverse URI generation differs from dispatch-rules in that
the first argument must be a symbol representing the name of the route
rather than a dispatch-proc. This helps avoid deep dependency
chains between routes. The name for a route is either the value passed
to maybe-name or the name of its dispatch procedure.
Returns a new dispatcher that reroots incoming requests using
request-reroot with the given
root before passing
the result to
dispatcher. Calls
next-dispatcher when
a request cannot be rerooted.
The rerooted dispatcher is parameterized to cooperate with the
reverse-uri procedure, meaning that generating a reverse URL
from within a request handler called by the dispatcher results in a
URL with the root prepended to it.
Combine dispatch-rules+roles, dispatch/servlet and
dispatch/mount to embed modular sub-applications into larger
applications where the former have no knowledge of the URL structure
of the larger application.
Added in version 0.28 of package koyo-lib.