코드가독성, 간소화, 기능을 구축하지 않아도 간단하게 사용가능함
func fetchCovidOverView(completionHandler: @escaping(Result<CityCovidOverView, Error>) -> Void)
{
let url = "<https://api.corona-19.kr/korea/country/new/>"
let param = ["serviceKey":"Q7oaiCWmwtfjy41srTkhN56IzZ3cdMuev"]
AF.request(url, method: .get, parameters: param).responseData { response in
switch response.result{
case let .success(data):
do{
let decoder = JSONDecoder()
let result = try decoder.decode(CityCovidOverView.self, from: data)
completionHandler(.success(result))
}catch{
completionHandler(.failure(error))
}
case let .failure(error):
completionHandler(.failure(error))
}
}
}
HTTP JSON 통신후 얻은 데이터를 CityCovidOverView 객체에 저장하는 코드이다.
AF.request
url, mehod, parameters 를 넣어주면 알아서 해당 메소드에 맞는 요청을 만들어준다. (오 지리네) 요청에 대한 응답으로 responseData를 사용 Switch - case 문을 통해 성공 실패에 따른 로직을 분리해 코드를 작성 하고 callback 함수를 호출 콜벡함수의 데이터를 호출부에서도 접근하기 위해 @escaping 언노테이션을 사용해 이스케이핑 클로저로 선언한다.