Warp
跳转到导航
跳转到搜索
Haskell 的 Web 服务器之一。
示例
最简单的 Web 服务器[1]。其中,为了能正常显示中文路径信息(而不是转义表示),使用了 wl-pprint 库[2]。
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Network.HTTP.Types (status200)
import Blaze.ByteString.Builder (copyByteString)
import qualified Data.ByteString.UTF8 as BU
import Data.Monoid
import Data.Text (unpack)
import Text.PrettyPrint.Leijen (pretty)
main = do
let port = 3000
putStrLn $ "Listening on port " ++ show port
run port app
app req = return $
case pathInfo req of
["yay"] -> yay
x -> index x
yay = ResponseBuilder status200 [ ("Content-Type", "text/plain") ] $ mconcat $ map copyByteString
[ "yay" ]
index x = ResponseBuilder status200 [("Content-Type", "text/html")] $ mconcat $ map copyByteString
[ "<p>Hello from ", BU.fromString $ show $ pretty $ map unpack x, "!</p>"
, "<p><a href='/yay'>yay</a></p>\n" ]