code

URLSession: 서버와 소통하는 주체, Json Decode

Lyla. 2024. 2. 20. 22:29

response status code가 200번대이어야함. 

 

URLSession.shared.dataTaskPublisher(for: request)
            .tryMap { result -> Data in
                guard let response = result.response as? HTTPURLResponse,
                      (200..<300).contains(response.statusCode)
                else {
                    let response = result.response as? HTTPURLResponse
                    let statusCode = response?.statusCode ?? -1
                    throw NetworkError.responseError(statusCode: statusCode)
                }
                return result.data
            }

 

 

URLSession.shared.dataTask(with: url) { data, response, error in
            if let error = error {
                print("Error: \(error.localizedDescription)")
                return
            }
            
            if let data = data {
                do {
                    //Data를 decode, 형식이 MyData이다.
                    let decodedData = try JSONDecoder().decode(MyData.self, from: data)
                    DispatchQueue.main.async {
                        self.data = decodedData
                    }
                } catch {
                    print("Error decoding data: \(error.localizedDescription)")
                }
            }
        }

Data를 decode, 형식이 MyData이다.