この質問のコードを使用して、基本的な投稿リクエストを抽出しようとしています(ただしlbsBackEnd
、 no-longer-existing の代わりに使用していlbsSink
ます)。
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai.Handler.Warp (run)
import qualified Data.ByteString.Char8 as C
import Network.Wai.Parse (parseRequestBody, lbsBackEnd)
import Network.Wai(Response(..))
import Network.HTTP.Types(status200)
import Blaze.ByteString.Builder
main = run 3000 app
app req = do
(params, _) <- parseRequestBody lbsBackEnd req
let r = C.concat $ map (\(x,y) -> C.concat [x,y]) params
return $ ResponseBuilder
status200
[("Content-Type", "text/plain")]
$ fromByteString r
その質問のコメントは、これが機能するはずであることを示唆していますが、型エラーが発生しています
Couldn't match expected type `C.ByteString'
with actual type `bytestring-0.9.2.1:Data.ByteString.Internal.ByteString'
Expected type: [(C.ByteString, C.ByteString)]
Actual type: [Network.Wai.Parse.Param]
In the second argument of `map', namely `params'
In the second argument of `($)', namely
Network.Wai.Parseのドキュメントでは、これParam
は の型シノニムであると言われているため、これは少し奇妙です。(ByteString, ByteString)
私が知る限り、これは機能するはずです。
私が間違っていることに関するヒントはありますか?