Haskell:
ส่งคำขอ HTTP
วิธีการ:
ลองมาทำสิ่งที่สนุกๆ กัน เราต้องการแพคเกจ http-client
และ http-client-tls
ตั้งค่า stack ของคุณและเพิ่มมันไปยังไฟล์ package.yaml
หรือ .cabal
ของคุณ จากนั้น ใช้คำสั่ง stack build
หรือคำสั่งที่เหมาะสมเพื่อดึงมันมา
นี่คือตัวอย่างคำขอ GET ง่ายๆ:
import Network.HTTP.Client
import Network.HTTP.Client.TLS
import qualified Data.ByteString.Lazy.Char8 as L8
main :: IO ()
main = do
manager <- newManager tlsManagerSettings
request <- parseRequest "http://httpbin.org/get"
response <- httpLbs request manager
L8.putStrLn $ responseBody response
สิ่งนี้จะพิมพ์ JSON ที่คุณได้รับจาก httpbin.org
ลงลึก
ย้อนกลับไปในวันที่ การส่งคำขอ HTTP ของ Haskell เป็นเรื่องที่ไม่ตรงไปตรงมาเท่าไหร่ แต่ไลบรารีเช่น http-client
ได้ทำให้กระบวนการนี้ง่ายขึ้น
มีทางเลือกอื่นไหม? แน่นอน มี wreq
, req
และอื่นๆ บ่อยครั้งที่มาพร้อมกับ syntactic sugar หรือคุณสมบัติเพิ่มเติม แต่ http-client
เหมือนเป็นมีดสวิสที่เชื่อถือได้ในลิ้นชักของคุณ – มันเสมอทำงานให้เสร็จ
ในส่วนภายใน, http-client
ใช้ Manager
เพื่อจัดการการเชื่อมต่อ มันมีประสิทธิภาพและใช้งาน socket ซ้ำ คุณสามารถปรับแต่งมันได้ แต่ค่าเริ่มต้นก็เพียงพอแล้วเพื่อเริ่มต้น
ดูเพิ่มเติม
เพื่อขยายชุดเครื่องมือของคุณ ลองดูสิ่งเหล่านี้: