Composable, reversible, efficient web routing using invertible invariants and bijections.
Utilities to route HTTP requests, mainly focused on path components. Routes are specified using bijections and invariant functors, allowing run-time composition (routes can be distributed across modules), reverse and forward routing derived from the same specification, and O(log n) lookups.
There are four steps/components of this package.
Route endpoint specification:
Web.Route.Invertible.Common
Route map construction:
Web.Route.Invertible.Common
Route map lookup:
Web.Route.Invertible
(for the generic interface),Web.Route.Invertible.Wai
,Web.Route.Invertible.Snap
, orWeb.Route.Invertible.Happstack
Reverse routing:
Web.Route.Invertible
orWeb.Route.Invertible.URI
Most users will just want to import a framework-specific module like Web.Route.Invertible.Wai
(or the generic Web.Route.Invertible
), each of which re-exports Web.Route.Invertible.Common
. See test/Main.hs for some examples.