将Haskell的WAI请求转换为Network.HTTP.Conduit请求

时间:2012-09-08 23:27:38

标签: haskell request yesod conduit http-conduit

我正在编写服务器,我需要转发某条Request消息。此消息基本上是POST(或GET)消息,可能包含几兆字节的文件。此消息将转发到另一个实际存储(或检索)文件的服务器。

我正在使用Yesod框架。因此,使用getWaiRequest,我可以获得WAI请求。但是为了启动新消息传递,我需要使用Network.HTTP.Conduit来实现其懒惰。所以我需要在该模块中创建一个Request m。但我不知道如何进行这种转换。 WAI的Request只是一种数据类型,但是Conduit是一种Request m类型,所以我不断收到错误消息,试图复制内容。

有人可以告诉我这是怎么做到的吗?如果没有,我如何在不使用HTTP Conduit的情况下将WAI请求传递给另一台服务器也同样合适。

谢谢!

1 个答案:

答案 0 :(得分:2)

这两种请求类型不兼容。您需要手动转换它们。 WAI不适合代理。最简单的选择是配置您的前端HTTP守护程序,以便立即转发相应的URL,而无需将它们发送到您的Yesod应用程序。