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 ซ้ำ คุณสามารถปรับแต่งมันได้ แต่ค่าเริ่มต้นก็เพียงพอแล้วเพื่อเริ่มต้น

ดูเพิ่มเติม

เพื่อขยายชุดเครื่องมือของคุณ ลองดูสิ่งเหล่านี้: