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 בעצמה ומספקת ממשק נוח ואלסטי לשימוש.