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.