web-inv-route: Composable, reversible, efficient web routing using invertible invariants and bijections

[ bsd3, library, web ] [ Propose Tags ]

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.

  1. Route endpoint specification: Web.Route.Invertible.Common

  2. Route map construction: Web.Route.Invertible.Common

  3. Route map lookup: Web.Route.Invertible (for the generic interface), Web.Route.Invertible.Wai, Web.Route.Invertible.Snap, or Web.Route.Invertible.Happstack

  4. Reverse routing: Web.Route.Invertible or Web.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.

Versions [faq] 0.1, 0.1.1, 0.1.2,,,
Dependencies base (>=4.9 && <5), bytestring (>=0.10), case-insensitive, containers (>=0.5), happstack-server (>=7), hashable, http-types (>=0.9), invertible (>0.1), network-uri (>=2.6.1), snap-core (>=0.9), text (>=0.10), transformers, unordered-containers, wai (>=1) [details]
License BSD-3-Clause
Copyright 2016-2018
Author Dylan Simon
Maintainer dylan@dylex.net
Category Web
Source repo head: git clone https://github.com/dylex/web-inv-route
Uploaded by DylanSimon at 2020-07-01T02:41:23Z
Distributions NixOS:
Downloads 2602 total (11 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs pending
Build status unknown [no reports yet]


  • Web
    • Route
      • Web.Route.Invertible
        • Web.Route.Invertible.Common
        • Web.Route.Invertible.Happstack
        • Web.Route.Invertible.Internal
        • Web.Route.Invertible.Snap
        • Web.Route.Invertible.URI
        • Web.Route.Invertible.Wai



Support constructing URIs from routes


Provide WAI-compatible interfaces


Provide Snap-compatible interfaces


Provide Happstack-compatible interfaces


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees