Ответ
URLSession — это основной класс для выполнения сетевых HTTP/HTTPS-запросов в iOS/macOS.
Пример простого GET-запроса:
// 1. Определяем URL
let url = URL(string: "https://api.github.com/users/apple")!
// 2. Создаем и запускаем задачу (dataTask) на shared сессии
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// 3. Обрабатываем ответ в completion handler (выполняется в фоновом потоке)
// Проверяем на ошибку сети
if let error = error {
print("Network error: (error.localizedDescription)")
return
}
// Проверяем HTTP статус-код
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode) else {
print("Server returned an error")
return
}
// Парсим полученные данные (JSON)
guard let data = data else { return }
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print("Successfully received JSON: (json)")
} catch {
print("JSON parsing error: (error)")
}
}
task.resume() // 4. Не забываем запустить задачу
Ключевые моменты:
URLSession.shared— синглтон для простых запросов. Для кастомных настроек (таймауты, кеширование) создают экземплярURLSession(configuration:).- Асинхронность: Запрос не блокирует главный поток.
- Типы задач: Помимо
dataTask, существуютdownloadTask(для файлов) иuploadTask.