Swift:
שליחת בקשת HTTP

איך לעשות:

בחבילת Foundation של Swift יש את URLSession שתעזור לנו לשלוח בקשות HTTP. הנה קוד דוגמא לבקשת GET:

import Foundation

let url = URL(string: "https://api.example.com/data")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    if let error = error {
        print("Client Error: \(error.localizedDescription)")
        return
    }
    
    guard let httpResponse = response as? HTTPURLResponse,
        (200...299).contains(httpResponse.statusCode) else {
        print("Server Error")
        return
    }
    
    if let mimeType = httpResponse.mimeType, mimeType == "application/json",
        let data = data,
        let dataString = String(data: data, encoding: .utf8) {
        print("Got data: \(dataString)")
    } else {
        print("Invalid Data Format")
    }
}

task.resume()

הפלט יהיה המידע שהשרת מחזיר בתור תגובה לבקשה שלך.

עיון מעמיק:

בשנים הראשונות של האינטרנט, בקשות HTTP היו יותר פשוטות אבל גם פחות יעילות. כיום, יש מערכת איתות מורכבת יותר עם הגדרות כמו Headers או Caching שיודעת להתמודד עם ביקושים רבים ולעבור נתונים בטוחים ומהירים יותר.

במערכת URLSession של Swift, לדוגמה, יש העדפה לממשקי עבודה (work sessions) המתמודדים עם בקשות אינטרנט בצורה אסינכרונית - כלומר לא גורמים לאפליקציה לחכות כשהם מתבצעות. זה מאפשר למשתמש להמשיך לעבוד עם האפליקציה בלי עיכובים.

קיימות גם ספריות אחרות כמו Alamofire שמפשטות את תהליך הבקשה והתגובה עוד יותר, אבל URLSession מהווה את הפתרון הסטנדרטי שמובנה ישירות בתוך Swift.

ראה גם: