URLSession은 Swift에서 네트워크 통신을 처리하기 위한 핵심 클래스입니다.
REST API와 통신하거나 파일을 다운로드할 때 주로 사용됩니다.
| 구성 요소 | 설명 |
|---|---|
URLSession | 요청을 생성하고 관리하는 객체 |
URLRequest | 요청의 상세 정보를 담는 구조체 |
URLSessionTask | 실제 네트워크 요청을 수행하는 작업 객체 |
URLSessionDataTask | 데이터를 요청하고 응답을 받는 작업 |
URLSessionDownloadTask | 파일 다운로드를 위한 작업 |
URLSessionUploadTask | 파일 업로드를 위한 작업 |
guard let url = URL(string: "https://api.example.com/data") else { return }
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("에러 발생: \(error)")
return
}
guard let data = data else { return }
// 받은 데이터 처리
print(String(data: data, encoding: .utf8) ?? "")
}
task.resume()
var request = URLRequest(url: URL(string: "https://api.example.com/login")!)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let body = ["id": "user123", "pw": "pass"]
request.httpBody = try? JSONSerialization.data(withJSONObject: body)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// 응답 처리
}
task.resume()
default: 캐시, 쿠키 등 사용ephemeral: 캐시, 쿠키 저장하지 않음 (인메모리)background: 백그라운드에서도 다운로드 가능예시:
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
resume() 호출 전까지 실행되지 않음DispatchQueue.main.async 사용URLSession은 iOS 네트워크 통신의 기본 도구로, REST API 연동이나 파일 전송 등에 널리 사용됩니다.
구조와 흐름을 잘 이해하면 대부분의 네트워크 작업을 안정적으로 처리할 수 있습니다.