welshy
Version 0.1.0.0 revision 1 uploaded by MichaelSchroeder.
Package meta
- Synopsis
- Haskell web framework (because Scotty had trouble yodeling)
- Description
A Haskell web framework heavily influenced by the excellent Scotty, which was in turn influenced by Ruby's Sinatra.
Welshy strives to make it easier to do error handling without overly complicating the control flow. An example:
{-# LANGUAGE OverloadedStrings #-}
import Control.Applicative import Control.Monad import qualified Data.Text.Lazy as T import Network.HTTP.Types import Web.Welshy fibs :: [Int] fibs = 0 : 1 : zipWith (+) fibs (tail fibs) main :: IO () main = welshy 3000 $ do get "/fibs" $ do offset <- queryParam "offset" <|> return 0 length <- queryParam "length" when (offset < 0 || length < 0) (halt $ status badRequest400) when (offset + length > 1000) (halt $ status requestedRangeNotSatisfiable416) let result = take length $ drop offset fibs text $ T.pack $ show result
Some of the features demonstrated here:
You can halt the current action at any point and continue with a different one.
Functions like queryParam and jsonParam have built-in error handling.
Welshy's Action monad is an instance of Alternative.
- Author
- Michael Schröder
- Bug reports
- https://github.com/mcschroeder/welshy/issues
- Category
- Web
- Copyright
- (c) 2013 Michael Schröder
- Homepage
- https://github.com/mcschroeder/welshy
- Maintainer
- mcschroeder@gmail.com
- Package URL
- n/a
- Stability
- n/a