我正在尝试使用Wai和Warp来编写一个适度的HTTP服务器,我试图读取POST / PUT请求的主体来提取表单参数。当我做以下
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai.Handler.Warp (run)
import qualified Data.ByteString.Char8 as C
import Network.Wai.Parse (parseRequestBody, lbsSink)
import Network.Wai(Response(..))
import Network.HTTP.Types(status200)
import Blaze.ByteString.Builder
main = run 3000 app
app req = do
(params, _) <- parseRequestBody lbsSink req
let r = C.concat $ map (\(x,y) -> C.concat [x,y]) params
return $ ResponseBuilder
status200
[("Content-Type", "text/plain")]
$ fromByteString r
然后我尝试了一个像
这样的简单请求curl -o - -X POST http://localhost:3000/ -d name=toto
看来我的参数没有传递给其他服务器,或者因为没有返回任何内容而没有正确解码。