使用Wai和Warp解析POST主体

时间:2011-11-17 21:25:38

标签: haskell web

我正在尝试使用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    

看来我的参数没有传递给其他服务器,或者因为没有返回任何内容而没有正确解码。

0 个答案:

没有答案