[swift] 제네릭을 사용하여 네트워크 통신을 어떻게 구현하는가?
이번에는 Swift에서 제네릭을 사용하여 네트워크 통신을 구현하는 방법에 대해 알아보겠습니다.
제네릭을 이용한 네트워크 통신 구현
Swift에서 제네릭을 사용하여 네트워크 통신을 구현하기 위해서는 Generics
를 활용한 API 클라이언트
를 만들 수 있습니다. 제네릭을 사용하여 여러 종류의 데이터를 다룰 수 있으므로, 유연하고 재사용 가능한 네트워크 코드를 작성할 수 있습니다.
다음은 제네릭을 사용하여 네트워크 통신을 구현하는 간단한 예제 코드입니다.
import Foundation
enum NetworkError: Error {
case invalidURL
case noData
// 기타 네트워크 에러 케이스들
}
struct APIClient {
let baseURL: URL
init(baseURL: URL) {
self.baseURL = baseURL
}
func request<T: Decodable>(endpoint: String, completion: @escaping (Result<T, Error>) -> Void) {
guard let url = URL(string: endpoint, relativeTo: baseURL) else {
completion(.failure(NetworkError.invalidURL))
return
}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let error = error {
completion(.failure(error))
return
}
guard let data = data else {
completion(.failure(NetworkError.noData))
return
}
do {
let decodedResponse = try JSONDecoder().decode(T.self, from: data)
completion(.success(decodedResponse))
} catch {
completion(.failure(error))
}
}
task.resume()
}
}
위의 코드는 제네릭을 이용하여 네트워크 통신을 구현하는 간단한 예제입니다. APIClient
는 baseURL과 request 메서드를 가지고 있으며, request 메서드는 제네릭을 이용하여 Decodable한 타입을 받아와서 네트워크 통신을 수행하고 결과를 반환합니다.
이와 같이 제네릭을 활용하여 네트워크 통신을 구현하면, 다양한 형태의 데이터를 처리할 수 있고, 코드의 재사용성과 유연성을 높일 수 있습니다.
위의 예제 코드를 참고하여 제네릭을 이용한 네트워크 통신을 구현해 보시기 바랍니다.