我正在使用 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 <-look "personId"
在阅读了关于类似问题的问题(比如这个)之后,我认为我必须在HasRqData
某处包含约束,但我无法了解在哪里以及如何。