【发布时间】:2018-02-17 20:12:47
【问题描述】:
我正在使用 Happstack 从 HTTP 请求中接收一些参数,然后将这些参数传递给一个函数,该函数将从数据库中检索数据并在 HTTP 响应中返回这些数据,如下所示:
myFunc :: IO String
myFunc = do r <- look "personId"
conn <- connectODBC "... my connection string ...";
vals <- quickQuery conn ("SELECT Name FROM Person where Id = ?") [(toSql r)];
return (processData vals)
handlers :: ServerPartT IO Response
handlers = do
x <- liftIO (myFunc);
decodeBody (defaultBodyPolicy "/tmp/" 0 1000 1000)
msum [
dir "getData" $ ok $ toResponse x
, ... other handlers ...
]
mainFunc = simpleHTTP nullConf handlers
但是当我构建上面的代码时,我得到了以下错误:
没有因使用“look”而产生的 (HasRqData IO) 实例 在 'do' 块的 stmt 中: r
在阅读了关于类似问题的问题(如this one)后,我认为我必须在某处包含HasRqData 约束,但我无法了解在哪里以及如何使用。
【问题讨论】: