在 Happstack 中使用多个处理程序的语法是什么?

What's the syntax of using multiple handlers in Happstack?

抱歉我的基本问题,但我是 Haskell 的新手。

我正在关注 this example 从请求主体接收一些值,但我的服务器也使用以下代码从目录提供静态文件:

fileServing :: ServerPart Response
fileServing = serveDirectory EnableBrowsing ["index.html"] "./Path/"

mainFunc = simpleHTTP nullConf $ msum [ 
                                        fileServing                                     
                                      ]

我将以下代码添加到我的库中,但我不确定在哪里使用 handlers 函数,因为我已经在 mainFunc 中有一个 msum

handlers :: ServerPart Response
handlers =
    do decodeBody myPolicy
       msum [ 
               myGetData
            ]

myGetData :: ServerPart Response
myGetData =
    do method POST
       username <- look "username"
       password <- look "password"
       ok $ toResponse (username ++ ", " ++ password)

fileServingmyGetDatamsum [fileServing]msum [myGetData]handlers都有ServerPart Response类型,也就是你的类型在 mainFunc 中传递给 simpleHTTP nullConf。既然如此,你可能想要...

mainFunc = simpleHTTP nullConf handlers

-- etc.

handlers :: ServerPart Response
handlers =
    do decodeBody myPolicy
       msum [ fileServing
            , myGetData
            ]

msum 这里将处理程序列表合并为一个处理程序(请注意,这也意味着 msum 在具有单个处理程序的列表上是多余的)。