【发布时间】:2014-05-02 10:51:47
【问题描述】:
我想在 Haskell 中使用 Warp 网络服务器创建一个网站。
由于我是 Haskell 初学者,像 this one 这样的例子对我来说太复杂了。
谁能给我看一个如何使用Warp的简单、最小的例子吗?
注意:这个问题故意显示没有研究工作,因为它是以问答方式回答的。
【问题讨论】:
标签: haskell haskell-warp
我想在 Haskell 中使用 Warp 网络服务器创建一个网站。
由于我是 Haskell 初学者,像 this one 这样的例子对我来说太复杂了。
谁能给我看一个如何使用Warp的简单、最小的例子吗?
注意:这个问题故意显示没有研究工作,因为它是以问答方式回答的。
【问题讨论】:
标签: haskell haskell-warp
这是一个使用 Warp 3.0+ 的最小 Hello World 应用程序。运行它,然后导航到http://localhost:3000。此示例将显示Hello world。
为了使此示例最小化,根本不处理 URL 路径(为任何路径传递相同的内容)。有关包含 URL 路径处理的稍长示例,请参阅 the Haskell Wiki
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai (responseLBS, Application)
import Network.Wai.Handler.Warp (run)
import Network.HTTP.Types (status200)
import Network.HTTP.Types.Header (hContentType)
main = do
let port = 3000
putStrLn $ "Listening on port " ++ show port
run port app
app :: Application
app req f =
f $ responseLBS status200 [(hContentType, "text/plain")] "Hello world!"
2014 年 6 月 20 日更新:Warp 3.0 包含一些 API 更改——将它们反映在代码中。
【讨论】:
OverloadedString 的第一行很重要,因为它允许将普通字符串转换为ByteStrings。否则,需要修改此示例以通过Blaze.ByteString.Builder.Char8 和/或Data.ByteString.Char8 将"text/plain" 和"Hello world!" 等字符串显式转换为ByteStrings。