[swift] Alamofire를 이용한 요청 재시도
Alamofire는 Swift로 작성된 HTTP 네트워킹 라이브러리로, 네트워크 요청을 보다 간편하게 처리할 수 있습니다. 하지만 가끔씩 네트워크 요청이 실패할 수 있습니다. 이때 요청을 재시도할 수 있는 방법을 알아보겠습니다.
재시도 로직 구현
다음은 Alamofire를 사용하여 간단한 재시도 로직을 구현하는 예제입니다.
import Alamofire
func requestDataWithRetry(url: URLConvertible, retryCount: Int, completion: @escaping (Result<Data, Error>) -> Void) {
var tries = 0
func makeRequest() {
AF.request(url).response { response in
if let error = response.error {
tries += 1
if tries < retryCount {
makeRequest()
} else {
completion(.failure(error))
}
} else if let data = response.data {
completion(.success(data))
}
}
}
makeRequest()
}
위의 코드는 requestDataWithRetry
함수를 사용하여 지정된 횟수만큼 요청을 재시도합니다.
사용 예제
이제 requestDataWithRetry
함수를 사용하여 네트워크 요청을 재시도 하는 방법을 살펴보겠습니다.
let apiUrl = "https://api.example.com/data"
let url = try! apiUrl.asURL()
requestDataWithRetry(url: url, retryCount: 3) { result in
switch result {
case .success(let data):
// 성공적으로 데이터를 받아왔을 때 처리
print("Data received: \(data)")
case .failure(let error):
// 재시도 횟수를 모두 사용한 뒤에도 실패했을 때 처리
print("Failed to get data: \(error.localizedDescription)")
}
}
위의 예제에서는 requestDataWithRetry
함수를 사용하여 3번의 재시도를 시도하고, 각각의 결과에 따라 적절한 처리를 할 수 있습니다.
Alamofire를 이용하여 재시도 로직을 구현하는 방법에 대해 알아보았습니다. 네트워크 요청이 실패할 경우에 대비하여 재시도 로직을 구현하면 안정적인 앱을 만들 수 있습니다.
참고 자료
- Alamofire 공식 문서: Alamofire
- Alamofire 재시도 가능한 요청: Retry Policy