我刚刚开始做一些Yesod + Haskell的东西。 jsonToRepJson被破坏了吗?
我在下面制作了这段代码,但我总是在jsonToRepJson部分出错。 它似乎没有得到预期的类型?
任何帮助都会很棒!谢谢:3
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
import Yesod
import Data.Text
data APP = APP
instance Yesod APP
mkYesod "APP" [parseRoutes|
/ TestR GET
|]
getTestR :: Handler RepJson
getTestR = jsonToRepJson $ object ["test".= ("test"::Text)]
main::IO()
main = warpDebug 3001 APP
这是我使用runhaskell时得到的
api.hs:18:12:
Couldn't match expected type `RepJson' with actual type `Value'
Expected type: Handler RepJson
Actual type: HandlerT APP IO Value
In the expression:
jsonToRepJson $ object ["test" .= ("test" :: Text)]
In an equation for `getTestR':
getTestR = jsonToRepJson $ object ["test" .= ("test" :: Text)]
答案 0 :(得分:7)
答案 1 :(得分:0)
我做的是,我使用了TypeContent
处理程序。
如果我正确理解了我读过的内容,repSelect
可以让我们轻松处理客户端要求的数据表示形式。
它读取请求标头并检查它是否要求JSON,然后它将吐出JSON数据,如果它需要HTML,它将提供HTML页面。假设您自己使用providRep
添加了所需的特定数据。
这是我的代码。
mkYesod "APP" [parseRoutes|
/ TestR GET
|]
getTestR::Handler TypedContent
getTestR = do
selectRep $ do
provideRep $ jsonToRepJson $ object $ (["test" .= ("test"::Text)])
main::IO()
main = warpDebug 3001 APP