Elixir:
שליחת בקשת HTTP עם אימות בסיסי
איך לעשות:
תחילה, נצטרך להתקין את החבילה HTTPoison
על ידי הוספתה לקובץ mix.exs
:
defp deps do
[
{:httpoison, "~> 1.8"}
]
end
ואז נריץ mix deps.get
בטרמינל כדי להתקין את החבילה.
עכשיו, בואו נשלח בקשת HTTP עם אימות בסיסי:
auth = :base64.encode("username:password")
headers = [{"Authorization", "Basic #{auth}"}]
url = "https://example.com/protected/resource"
case HTTPoison.get(url, headers) do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
IO.puts("Success! Response: #{body}")
{:ok, %HTTPoison.Response{status_code: status_code}} ->
IO.puts("Received non-200 response: #{status_code}")
{:error, %HTTPoison.Error{reason: reason}} ->
IO.puts("Error: #{reason}")
end
תוצאה לדוגמא:
Success! Response: {"message":"Hello, authenticated user!"}
הצצה לעומק:
בנייה ושליחת בקשות עם אימות בסיסי היא אסטרטגיה שחייה איתנו עוד מראשית ימי HTTP. זה אינו הכי בטוח שיש, אבל זה פשוט ונפוץ במקרים שאין צורך ברמת אבטחה גבוהה במיוחד. האימות הבסיסי עובד על ידי שליחת שם המשתמש והסיסמא בקידוד Base64 בכותרת Authorization.
על אף פשטותו, קיימות גם אלטרנטיבות יותר מאובטחות כמו אימות דיגיטלי (Digest Authentication), OAuth, ו-Token based authentication. הבחירה באימות תלויה בדרישות האבטחה ובצרכים הספציפיים של המערכת.
אגב, ל-Elixir יש חבילות אחרות שיכולות לשלוח בקשות HTTP, כמו Tesla
וhackney
. HTTPoison
עוגנת ב-hackney
בעצמה ומספקת ממשק נוח ואלסטי לשימוש.