Haskell:
Wysyłanie żądania HTTP

Jak to zrobić:

W Haskellu do wysyłania żądań HTTP możemy użyć biblioteki http-conduit. Poniżej znajdziesz przykład prostego żądania GET.

import Network.HTTP.Simple

main :: IO ()
main = do
    response <- httpBS "http://httpbin.org/get"
    putStrLn $ "The status code was: " ++ show (getResponseStatusCode response)
    putStrLn "The headers were:"
    print $ getResponseHeaders response
    putStrLn "The body was:"
    BS.putStrLn $ getResponseBody response

Przy uruchomieniu, wynik będzie podobny do poniższego:

The status code was: 200
The headers were:
[(CI.mk "Content-Type","application/json"), ...]
The body was:
{
  ...
}

Deep Dive

W roku 2011, HTTP Conduit został stworzony jako część większej biblioteki conduit dla języka Haskell, ułatwiająca obsługę strumieni danych. Alternatywami dla http-conduit mogą być http-client lub bardziej niskopoziomowa http - ale conduit oferuje dużą elastyczność, zwłaszcza przy obsłudze dużych danych.

Podczas wysyłania zapytania, http-conduit tworzy połączenie z podanym URL, wysyła żądanie i czeka na odpowiedź. Jest to asynchroniczna operacja, która w Haskellu jest obsługiwana za pomocą monad IO, pozwalając na efekty uboczne w czysto funkcyjnym środowisku.

Alternatywne biblioteki jak Wreq lub Req też pozwalają na wysyłanie żądań HTTP, często z dodatkowymi udogodnieniami typu automatyczne przetwarzanie JSON, ale mogą być mniej elastyczne przy pracy ze specyficznymi rodzajami powiązań HTTP.

See Also