使用Haskell编写一个简单的Web服务器
发布时间:2023-12-09 17:32:40
以下是一个简单的Web服务器的Haskell代码示例:
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.HTTP.Types
import Network.Wai.Handler.Warp (run)
import qualified Data.ByteString.Lazy.Char8 as L
app :: Application
app request respond = respond $ case pathInfo request of
["hello"] -> helloHandler
_ -> defaultHandler
helloHandler :: Response
helloHandler = responseLBS status200 [("Content-Type", "text/plain")] "Hello, World!"
defaultHandler :: Response
defaultHandler = responseLBS status404 [("Content-Type", "text/plain")] "Not Found"
main :: IO ()
main = run 8080 app
在这个例子中,我们使用了wai和warp库来构建Web服务器。
app是我们定义的应用程序处理函数,它接收一个Request对象和一个Responder函数作为参数。Request对象包含了客户端发出的HTTP请求的信息,而Responder函数用于生成HTTP响应。在这个例子中,我们调用pathInfo函数获取请求的路径信息,并使用模式匹配来确定返回的响应内容。
helloHandler函数返回一个包含"Hello, World!"文本的响应。
defaultHandler函数返回一个404错误响应,表示请求的路径不存在。
main函数使用run函数来启动服务器,监听8080端口,并将请求交给app处理。
使用这个例子来创建一个Haskell文件(例如Main.hs),然后使用stack或cabal来构建和运行它:
$ stack build $ stack exec web-server
现在,当你在浏览器中访问http://localhost:8080/hello时,你将看到Hello, World!的响应。如果访问其他路径,你将得到一个404错误的响应。
