欢迎访问宙启技术站
智能推送

使用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

在这个例子中,我们使用了waiwarp库来构建Web服务器。

app是我们定义的应用程序处理函数,它接收一个Request对象和一个Responder函数作为参数。Request对象包含了客户端发出的HTTP请求的信息,而Responder函数用于生成HTTP响应。在这个例子中,我们调用pathInfo函数获取请求的路径信息,并使用模式匹配来确定返回的响应内容。

helloHandler函数返回一个包含"Hello, World!"文本的响应。

defaultHandler函数返回一个404错误响应,表示请求的路径不存在。

main函数使用run函数来启动服务器,监听8080端口,并将请求交给app处理。

使用这个例子来创建一个Haskell文件(例如Main.hs),然后使用stackcabal来构建和运行它:

$ stack build
$ stack exec web-server

现在,当你在浏览器中访问http://localhost:8080/hello时,你将看到Hello, World!的响应。如果访问其他路径,你将得到一个404错误的响应。