wai-middleware-route-0.6.0: Wai dispatch middleware

Safe HaskellSafe-Infered

Network.Wai.Middleware.Route

Contents

Description

This module contains helpers for use Yesod.Routes.Dispatch with Network.Wai.

This Middleware uses first Piece in path to route HTTP method. Static means concrete method. Dynamic means any method.

Synopsis

Routing rules

data Rule Source

Rule for route. Rules without single quotes (') means fixed length paths. And vice versa, rules with single quotes (') means paths with variable lengh

Paths converts to Pieces by following rules:

  • Paths splits by slashes (/).
  • Text between slashes becomes Static Piece. The same thing happens with the text at the ends of paths.
  • Hashes (#) inside slashes becomes Dynamic Pieces.
  • To make route with variable length just add asterisk (*) after last slash.
 "foo"
 [Static "foo"] Fixed
 
 "foo/bar"
 [Static "foo", Static "bar"] Fixed
 
 "foo/#/bar"
 [Static "foo", Dynamic, Static "bar"] Fixed
 
 "foo/#/bar/baz/*"
 [Dynamic, Static "foo", Dynamic, Static "bar", Static "baz"] Variable

Constructors

Get Text Application

GET method

Post Text Application

POST method

Head Text Application

HEAD method

Put Text Application

PUT method

Delete Text Application

DELETE method

Trace Text Application

TRACE method

Connect Text Application

CONNECT method

Options Text Application

OPTIONS method

Any Text Application

Any HTTP method

Gen Text Text Application

Generic rule with HTTP method and path

mkRoutesSource

Arguments

:: [Rule]

Routing rules

-> [Route Application] 

Make Routes from Rules.

Equivalent map mkRoute

mkRoutes' :: [Rule] -> Dispatch ApplicationSource

Make Dispatchs from Rules.

Equivalent toDispatch . mkRoutes

mkRoute :: Rule -> Route ApplicationSource

Make Route from Rule. rhPieces of Route will be prepended with Piece with corresponding HTTP method. Static means concrete method. Dynamic means any method.

 mkRoute $ Get "foo/bar" app
 Route [Static "foo", Static "bar"] False (const $ Just app) 

Middleware

dispatchSource

Arguments

:: Dispatch Application

Dispatch function. Use toDispatch and route helpers below.

-> Application

Default (404) application.

-> Application 

Dispatch function.

 rs :: Dispatch Application
 rs = toDispatch . mkRoutes [
      Get  "foo"  fooGetApp
    , Post "foo"  fooPostApp
    , Get "foo//bar" fooDynBarApp
 
    , Any  "any"  anyMethodApp
    ]
 
 app :: Application
 app = dispatch rs (error "Not dispatched")