2013-07-14 2 views
1
{-# LANGUAGE TemplateHaskell, QuasiQuotes, OverloadedStrings #-} 
{-# LANGUAGE MultiParamTypeClasses, TypeFamilies #-} 

import Yesod 
import Control.Monad (void) 

data Foo = Foo 

mkYesod "Foo" [parseRoutes| 
    /FooR POST 
|] 

instance Yesod Foo 

-- Always prints "". 
postFooR = void $ 
    getRequest >>= liftIO . print . ("Params :" ++) . concatMap show . reqGetParams 

main = warp 3000 Foo 

나는 몇 가지 Yesod 튜토리얼을 통해 진행 중이지만 POST 매개 변수를 검사하려고 노력하고 있습니다. 위 코드를 실행하면 어떻게됩니까?reqGetParams (Yesod)를 어떻게 올바르게 사용합니까?

$ runhaskell foo.hs 
$ curl --data "foo=bar" localhost:3000 

14/Jul/2013:15:01:51 -0700 [Info#yesod-core] Application launched @(yesod-core-1.2.3:Yesod.Core.Dispatch ./Yesod/Core/Dispatch.hs:129:11) 
"Params: " 
127.0.0.1 - - [14/Jul/2013:15:02:07 -0700] "POST/HTTP/1.1" 200 - "" "curl/7.30.0" 

내가 뭘 잘못하고 있니? 고맙습니다!

+1

'curl --data'는 POST를 통해 params를 보내고, reqGetParams는 URL로 전달 된 params를 제공합니다. 예 : "localhost : 3000? foo = bar". Yesod는 POST 데이터에 액세스하는 방법을 알려주지는 못합니다. –

답변