Haskell:
Envoi d'une requête HTTP
How to:
Haskell est élégant. Utilisons http-client
pour envoyer une requête GET simple.
import Network.HTTP.Client
import Network.HTTP.Types.Status (statusCode)
main :: IO ()
main = do
manager <- newManager defaultManagerSettings
request <- parseRequest "http://httpbin.org/get"
response <- httpLbs request manager
putStrLn $ "Le statut: " ++ show (statusCode $ responseStatus response)
print $ responseBody response
Output:
Le statut: 200
"{\"args\":{},\"headers\":{...},\"origin\":\"...\",\"url\":\"http://httpbin.org/get\"}"
Simple, non?
Deep Dive:
Historiquement, http-client
est la bibliothèque go-to pour HTTP avec Haskell, manifestant l’approche minimaliste de Haskell. Pour HTTP/2 ou des fonctions multithreading, regardez http2-client
. Les détails comme la gestion des headers ou des cookies sont fins, mais la doc couvre ça en profondeur.
See Also:
- La documentation de
http-client
: http://hackage.haskell.org/package/http-client - Pour des requêtes plus complexes,
servant-client
: http://hackage.haskell.org/package/servant-client - Les RFCs HTTP, pour comprendre ce qui se passe sous le capot: https://tools.ietf.org/html/rfc7231