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이다.