@hackage / web-inv-route

Composable, reversible, efficient web routing using invertible invariants and bijections

Latest0.1.3.3

About

Metadata

  • Last updated , by DylanSimon
  • License BSD-3-Clause
  • Categories Web Development
  • Maintained by: dylan@dylex.net

  • Lottery factor: 1

Links

Installation

Package Flags

Use the -f option with cabal commands to enable flags

    uri (on by default)

    Support constructing URIs from routes

    wai (on by default)

    Provide WAI-compatible interfaces

    snap (on by default)

    Provide Snap-compatible interfaces

    happstack (on by default)

    Provide Happstack-compatible interfaces

Readme

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.