Warp

来自百合仙子's Wiki
跳转到导航 跳转到搜索

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" ]

参见

外部链接

参考资料