Swift에서 URLSession은 HTTP 통신을 위한 기본 API로, 서버와 데이터를 주고받을 때 사용됩니다. 앱에서 REST API와 통신하거나 파일을 다운로드할 때 자주 사용됩니다.
URLSession은 Apple에서 제공하는 비동기 네트워킹 API입니다. 주로 다음 용도로 사용됩니다:
디테일하게 설명하면
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()