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

时间:2018-02-12 01:29:02

标签: haskell happstack hdbc

对不起我的基本问题,但我是Haskell的新手。

我跟随this example从请求正文中接收了一些值,但我的服务器还使用以下代码从目录中提供静态文件:

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

mainFunc = simpleHTTP nullConf $ msum [ 
                                        fileServing                                     
                                      ]

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

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)

1 个答案:

答案 0 :(得分:1)

fileServingmyGetDatamsum [fileServing]msum [myGetData]handlers都有ServerPart Response类型,这是您传递的类型到simpleHTTP nullConf的{​​{1}}。既然如此,你可能想要......

mainFunc

mainFunc = simpleHTTP nullConf handlers -- etc. handlers :: ServerPart Response handlers = do decodeBody myPolicy msum [ fileServing , myGetData ] 这里将处理程序列表组合到一个处理程序中(请注意,单个处理程序的列表中的msum也是多余的)。