Minimal Warp webserver示例

Uli*_*ler 35 haskell haskell-warp

我想在Haskell中使用Warp webserver 创建一个网站.

由于我是Haskell的初学者,像这样的例子对我来说太复杂了.

谁能告诉我一个如何使用Warp的简单,最小的例子?

注意:这个问题故意显示没有研究工作,因为它回答了Q&A风格.

Uli*_*ler 50

这是使用Warp 3.0+ 的最小Hello World应用程序.运行它,然后导航到http://localhost:3000.这个例子将显示Hello world.

为了使此示例保持最小,根本不处理URL路径(为任何路径传递相同的内容).有关合并URL路径处理的稍长示例,请参阅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!"
Run Code Online (Sandbox Code Playgroud)

更新2014-06-20: Warp 3.0包含一些API更改 - 在代码中反映它们.

  • 请解释downvote,只是downvoting这将不会使帖子更好! (7认同)
  • 请注意,包含`OverloadedString`的第一行很重要,因为它允许将普通字符串转换为`ByteString`s.否则,需要修改此示例以通过`Blaze.ByteString.Builder.Char8`和/或`Data.ByteString将`text/plain"和`"Hello world!"`等字符串显式转换为`ByteString` .Char8`. (4认同)