2012-04-03 58 views
2

试图构建一个RequestNetwork.HTTP.Conduit包。说明如下:如何构建Network.HTTP.Conduit.Request对象?

此数据类型的构造函数未公开。相反,你应该 请使用def方法来检索默认实例,或parseUrl 从URL构造,然后用下面的记录,以便 修改...

我不知道这是什么手段。我如何“修改”一个不可变的Request对象;此外“”下面没有任何功能返回 a Request对象!

这是据我得到:

main = do 
    let req = def :: String 
    putStrLn "What now? How do I make it a POST?" 

虽然我不知道为什么我用String上述任一。

任何帮助表示赞赏。

回答

5

从文档中不完全清楚,但“下面的函数”实际上是记录标签,因此您可以使用记录更新语法来构造您想要的请求。当然,这里的“修改”意味着创建基于默认更新的新请求,而不是实际的破坏性更新。

换句话说,这样的事情:

let req = def { method = methodPost, ... } 
+1

你是对的,目前还不清楚。我只是添加了一些意见,我希望澄清一些事情:https://github.com/snoyberg/http-conduit/commit/82e0e77291eafa83969abc539ea9ad63fb6a9f8a。这个设置的解释(我称之为设置类型)可以在以下网址找到:http://www.yesodweb.com/book/settings-types – 2012-04-03 17:01:10

+0

@MichaelSnoyman你不是指'def'而不是'req': '让req = req'? – drozzy 2012-04-03 17:54:30

+0

我觉得这种方式有点奇怪;但我想如果它的工作... – drozzy 2012-04-03 17:59:02