Swift:
Wysyłanie żądania HTTP

How to (Jak to zrobić):

import Foundation

let url = URL(string: "https://api.example.com/data")!
var request = URLRequest(url: url)
request.httpMethod = "GET"

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Client error: \(error.localizedDescription)")
    }

    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 {
        do {
            let json = try JSONSerialization.jsonObject(with: data, options: [])
            print("Response: \(json)")
        } catch {
            print("JSON error: \(error.localizedDescription)")
        }
    }
}

task.resume()

Sample output:

Response: {
    id = 1;
    name = "Example Data";
}

Deep Dive (Dogłębna analiza):

W dawnych czasach, wysyłanie żądania HTTP wymagało linijków w terminalu z curl albo komplikacji z sockets. Teraz, Swift załatwia ci większość pracy – używasz URLSession do zarządzania sesjami sieciowymi.

Alternatywy? Biblioteki jak Alamofire upiększają kod i dodają dodatkową funkcjonalność. Da się też używać niższego poziomu CFNetwork dla większej kontroli. Wybór zależy od potrzeb.

Implementacja? URLRequest tworzy twoje żądanie, ustalając metodę, nagłówki, ciało. URLSession obsługuje wysyłkę i odbiór danych. Można synchronicznie (dataTask) czy asynchronicznie (dataTask(with:completionHandler:)) – prawdziwa moc Swifta.

See Also (Zobacz również):