[TIL] WishListApp 과제 - URL Session 사용하기

신승현·2024년 4월 16일

TIL

목록 보기
59/72
post-thumbnail

1️⃣ URL Session 사용하기

이전에 챌린지반 과제를 할때는 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()
    }
}
profile
개발자

0개의 댓글