Библиотека Haskell для связи по HTTP

Какая библиотека рекомендуется для программирования веб-клиента, которая включает HTTP-запросы.

Я знаю, что есть пакет под названием HTTP, но он не поддерживает HTTPS. Есть ли лучшая библиотека для этого?

Я ожидаю, что библиотека с функциональностью примерно такая же для Haskell.

4 ответа

Решение

Брайан О'Салливан выпустил библиотеку с именем wreq, которая великолепна и проста в использовании для HTTP-коммуникации.

Связанное руководство для того же автора находится здесь.

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)       

Также обязательно ознакомьтесь с руководством.

В дополнение к Network.HTTP.Conduit там Network.Http.Client который выставляет io-streams интерфейс.

Слуга прост в использовании (хотя трудно понять) и магический. Он позволяет указать API как необитаемый тип и на его основе генерирует поведение запросов и ответов. Вам никогда не придется беспокоиться о сериализации или десериализации, или даже JSON - он автоматически преобразует JSON в и из собственных объектов Haskell на основе API. У него тоже отличный учебник.

Другие вопросы по тегам