用于HTTP通信的Haskell库

时间:2013-04-07 19:24:53

标签: haskell haskell-platform

推荐的涉及HTTP请求的Web客户端编程库是什么。

我知道有一个名为HTTP的软件包,但它似乎不支持HTTPS。有没有更好的图书馆呢?

我希望Haskell的库具有类似this的功能。

4 个答案:

答案 0 :(得分:14)

Network.HTTP.Conduit有一个干净的API(它使用Network.HTTP.Types),如果您对管道有所了解,则使用起来非常简单。例如:

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Data.Conduit
import Network.HTTP.Conduit
import qualified Data.Aeson as J

main =
  do manager <- newManager def
     initReq <- parseUrl "https://api.github.com/user"
     let req = applyBasicAuth "niklasb" "password" initReq
     resp <- runResourceT $ httpLbs req manager

     print (responseStatus resp)
     print (lookup "content-type" (responseHeaders resp))

     -- you will probably want a proper FromJSON instance here,
     -- rather than decoding to Data.Aeson.Object
     print (J.decode (responseBody resp) :: Maybe J.Object)       

另请确保consult the tutorial

答案 1 :(得分:12)

Bryan O'Sullivan发布了一个名为wreq的库,它非常易于用于HTTP通信。

同一作者的相关教程是here.

答案 2 :(得分:5)

除了Network.HTTP.Conduit Network.Http.Client,它还会公开io-streams界面。

答案 3 :(得分:1)

Servant易于使用(虽然难以理解)且神奇。它允许您将API指定为无人居住的类型,并基于它生成请求和响应行为。您永远不必担心序列化或反序列化,甚至JSON - 它会根据API自动将JSON转换为本机Haskell对象和从本机Haskell对象转换JSON。它也有一个很好的tutorial