Safe Haskell | None |
---|---|
Language | Haskell98 |
Support for static routing tables in Happstack. The routing tables are order independent as long as:
- if any two handlers overlap, one of them handles a more specific path than the other. The more specific handler is then tried first.
Routing tables are constructed from dir
, path
, remainingPath
,
choice
, and param
.
A routing table is compiled by using compile
. The result is an
overlap report, and a prefix tree that is used to efficiently
dispatch requests by means of dispatch
.
See the file src/Happstack/StaticRouting/Test.hs
in the distribution
for examples.
- data Route a
- compile :: (MonadIO m, HasRqData m, ServerMonad m, FilterMonad Response m) => Route (m Response) -> Either String (m (Maybe Response))
- choice :: [Route a] -> Route a
- dir :: String -> Route a -> Route a
- param :: Route a -> Route a
- path :: forall m hm h r r'. Path m hm h r => Method -> (m r -> hm r') -> h -> Route (hm r')
- class Path m hm h r | h r -> m
- remainingPath :: Method -> h -> Route h
Documentation
compile :: (MonadIO m, HasRqData m, ServerMonad m, FilterMonad Response m) => Route (m Response) -> Either String (m (Maybe Response)) Source #
Compile routes or return overlap report. Returns 'Left e' in
case of order-dependent overlap between handlers, where e
describes the overlap. Returns 'Right h', where h is a compiled
handler that returns Nothing
in case no matching handler was
found, otherwise 'Just response'.
path :: forall m hm h r r'. Path m hm h r => Method -> (m r -> hm r') -> h -> Route (hm r') Source #
Expect the given method, and exactly n
more segments, where n
is the arity of the handler.
class Path m hm h r | h r -> m Source #
Support for varying number of arguments to path
handlers.
pathHandler, arity, canBeApplied
Path m hm (m r) r Source # | |
(FromReqURI v, ServerMonad hm, Path m hm h r) => Path m hm (v -> h) r Source # | |
remainingPath :: Method -> h -> Route h Source #
Expect zero or more segments.