이전에 챌린지반 과제를 할때는 Alamofire를 사용해서 데이터를 받아왔지만, 이번 주차 과제에서는 URL Session을 사용해야 하기 때문에 URL Sesstion을 사용해서 데이터를 받아왔다.
final class NetworkManager {
let url = "https://dummyjson.com/products/"
func fetchProducts(id: Int, completion: @escaping (Result<WishData, Error>) -> Void) {
// URL 생성
guard let url = URL(string: "\(self.url)\(id)") else {
completion(.failure(NSError()))
return
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
// URLSession 인스턴스 생성
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error {
completion(.failure(error))
return
}
guard let data else {
completion(.failure(NSError()))
return
}
do {
let hasData = try JSONDecoder().decode(WishData.self, from: data)
completion(.success(hasData))
} catch {
completion(.failure(error))
}
}
// 네트워크 요청 시작
task.resume()
}
}