[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를 이용하여 재시도 로직을 구현하는 방법에 대해 알아보았습니다. 네트워크 요청이 실패할 경우에 대비하여 재시도 로직을 구현하면 안정적인 앱을 만들 수 있습니다.

참고 자료