Swift에서 URLSessionHTTP 통신을 위한 기본 API로, 서버와 데이터를 주고받을 때 사용됩니다. 앱에서 REST API와 통신하거나 파일을 다운로드할 때 자주 사용됩니다.

1. URLSession이란?

URLSession은 Apple에서 제공하는 비동기 네트워킹 API입니다. 주로 다음 용도로 사용됩니다:

디테일하게 설명하면


2. 기본 구조

let url = URL(string: "<https://api.example.com/data>")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // 응답 처리
}
task.resume()

전체 플로우

import Foundation

// 1. URL 생성 (옵셔널 바인딩으로 안전하게 처리)
guard let url = URL(string: "<https://api.example.com/data>") else {
    print("❌ 유효하지 않은 URL")
    return
}

// 2. URLRequest 객체 생성 및 설정
var request = URLRequest(url: url)
request.httpMethod = "GET"  // or "POST", "PUT", "DELETE"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// 필요 시 헤더 추가 가능
// request.setValue("Bearer <TOKEN>", forHTTPHeaderField: "Authorization")

// 3. URLSession으로 dataTask 생성
let task = URLSession.shared.dataTask(with: request) { data, response, error in
    
    // 4. 에러 체크
    if let error = error {
        print("❌ 네트워크 에러: \\(error.localizedDescription)")
        return
    }

    // 5. 응답 상태코드 확인
    guard let httpResponse = response as? HTTPURLResponse else {
        print("❌ 유효하지 않은 응답 객체")
        return
    }

    print("📡 상태코드: \\(httpResponse.statusCode)")

    guard (200...299).contains(httpResponse.statusCode) else {
        print("❌ 서버 응답 오류: \\(httpResponse.statusCode)")
        return
    }

    // 6. 데이터 존재 여부 확인 및 JSON 파싱
    guard let data = data else {
        print("❌ 데이터가 없습니다.")
        return
    }

    do {
        // 7. JSON 파싱 (Dictionary 또는 Array 형태)
        if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] {
            print("✅ 파싱된 JSON: \\(json)")
        } else {
            print("❌ JSON 형식이 Dictionary가 아닙니다.")
        }
    } catch {
        print("❌ JSON 디코딩 실패: \\(error)")
    }
}

// 8. 네트워크 요청 시작
task.resume()