2012-04-03 64 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