IOS개발: SWIFT/7. 실전 프로젝트 제작

Swift에서 URLSession과 Codable을 이용한 네트워킹

_Blue_Sky_ 2024. 9. 19. 14:22
728x90
728x90

Swift 앱에서 외부 데이터를 가져오거나 전송하는 것은 필수적인 작업입니다. 이를 위해 주로 URLSessionCodable 프로토콜을 사용합니다. URLSession은 네트워크 요청을 보내고 응답을 받는 역할을 하며, Codable 프로토콜은 JSON, Plist 등의 데이터를 Swift 객체로 변환하는 데 사용됩니다.

URLSession

URLSession은 Swift에서 네트워크 통신을 위한 가장 기본적인 클래스입니다. HTTP 요청을 보내고, 서버로부터 데이터를 받아오는 등 다양한 네트워킹 작업을 수행할 수 있습니다.

주요 메서드:

  • dataTask(with:completionHandler:): 지정된 URL로 데이터를 요청하고, 응답 데이터, 응답, 에러를 핸들러를 통해 전달합니다.
  • dataTask(withRequest:completionHandler:): URLRequest 객체를 사용하여 더욱 복잡한 요청을 구성할 수 있습니다.
  • downloadTask(with:completionHandler:): 파일 다운로드를 위한 작업을 생성합니다.

예시 코드:

import Foundation

let urlString = "https://api.example.com/data"
let url = URL(string: urlString)!

let task = URLSession.shared.dataTask(with: url) { data, response, error in
    guard let data = data else {
        print("Error: no data")
        return
    }
    
    //  데이터 처리 (예: JSON 파싱)
    // ...
}

task.resume()
 

Codable

Codable 프로토콜은 Swift 4에서 도입된 프로토콜로, JSON, Plist 등의 데이터를 Swift 객체로 직렬화(encoding) 및 역직렬화(decoding)하는 것을 간단하게 처리할 수 있도록 해줍니다.

Codable을 사용하기 위한 조건:

  • 구조체(struct) 또는 클래스(class)에 Codable 프로토콜을 채택해야 합니다.
  • 프로퍼티에 Encodable 또는 Decodable 프로토콜을 채택한 타입을 사용해야 합니다.

예시 코드:

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}
 

URLSession과 Codable 함께 사용하기

import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func fetchData() {
    let urlString = "https://api.example.com/users"
    let url = URL(string: urlString)!
    
    URLSession.shared.dataTask(with: url) { data, response, error in
        guard let data = data else {
            print("Error : no data")
            return
        }
        
        let decoder = JSONDecoder()
        do {
            let users = try decoder.decode([User].self, from: data)
            print(users)
        } catch {
            print("Error decoding JSON: \(error)")
        }
    }.resume()
}
 

위 코드는 URLSession을 사용하여 API에서 사용자 데이터를 가져오고, Codable을 이용하여 JSON 데이터를 User 객체로 변환하는 예시입니다.

추가 고려 사항

  • 에러 처리: 네트워크 오류, JSON 파싱 오류 등 다양한 에러를 처리해야 합니다.
  • 백그라운드 작업: URLSession은 백그라운드 스레드에서 동작하므로, 메인 스레드에서 UI를 업데이트할 때 주의해야 합니다.
  • 캐싱: 데이터를 로컬에 캐싱하여 네트워크 트래픽을 줄이고 응답 속도를 향상시킬 수 있습니다.
  • 보안: API 키, 사용자 정보 등 민감한 데이터를 안전하게 처리해야 합니다.
  • SwiftUI: SwiftUI에서는 URLSessionTask를 사용하여 비동기적으로 데이터를 가져올 수 있습니다.

참고 자료

결론

URLSession과 Codable은 Swift 앱에서 네트워킹을 구현하는 데 필수적인 도구입니다. 이 가이드를 통해 기본적인 사용법을 익히고, 더 복잡한 네트워킹 작업을 수행할 수 있도록 준비하세요.

참고: 위에 제시된 예시 코드는 간단한 예시이며, 실제 프로젝트에서는 에러 처리, 캐싱, 보안 등 다양한 요소를 고려하여 더욱 안정적인 코드를 작성해야 합니다.

728x90
728x90