[swift] Alamofire의 응답 인터셉터 활용하기

Alamofire는 Swift로 작성된 네트워킹 라이브러리로, 인터셉트(intercept) 기능도 제공합니다. 이 기능을 활용하면 서버로부터 받은 응답에 대해 원하는 작업을 수행할 수 있습니다. 이번 포스트에서는 Alamofire의 응답 인터셉터를 사용하는 방법을 알아보겠습니다.

1. Alamofire 설치하기

먼저 Alamofire를 사용하기 위해서는 프로젝트에 해당 라이브러리를 설치해야 합니다. Cocoapods를 사용한다면 Podfile에 다음과 같이 추가합니다.

pod 'Alamofire'

터미널을 열고 프로젝트 디렉토리로 이동한 뒤, pod install 명령어를 실행하여 Alamofire를 설치합니다.

2. 응답 인터셉터 구현하기

Alamofire에서는 Session 객체를 사용하여 응답 인터셉터를 구현할 수 있습니다. Session 객체는 Interceptor 프로토콜을 채택한 인터셉터를 등록할 수 있는 기능을 제공합니다. 응답을 인터셉트하고 처리하는 방법은 다양한데, 여기서는 응답의 상태 코드를 확인하여 특정 처리를 수행하는 예제를 보여드리겠습니다.

import Alamofire

class MyInterceptor: Interceptor {
    func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result<URLRequest, Error>) -> Void) {
        completion(.success(urlRequest))
    }
    
    func intercept(_ response: AFDataResponse<Data>, for session: Session, completion: @escaping (Result<AFDataResponse<Data>, Error>) -> Void) {
        if let statusCode = response.response?.statusCode {
            switch statusCode {
            case 200..<300:
                // 응답이 성공한 경우
                print("Success")
            case 400..<500:
                // 클라이언트 오류가 발생한 경우
                print("Client Error")
            case 500..<600:
                // 서버 오류가 발생한 경우
                print("Server Error")
            default:
                // 그 외의 경우
                print("Unknown Error")
            }
        }
        completion(.success(response))
    }
}

// Session에 인터셉터 등록하기
let session = Session(interceptor: MyInterceptor())

위 예제 코드에서 MyInterceptor라는 클래스가 응답 인터셉터를 구현한 것을 볼 수 있습니다. adapt 메서드는 요청을 변경할 수 있는 기능을 제공하며, 이 예제에서는 원본 요청을 그대로 사용하도록 합니다. intercept 메서드는 응답을 받았을 때 호출되는데, 여기서는 응답의 상태 코드를 확인하여 각각의 경우에 맞는 처리를 수행하고 결과를 출력합니다.

3. 응답 인터셉터 사용하기

인터셉터를 등록한 Session 객체를 사용하여 Alamofire 요청을 보낼 때, 등록한 인터셉터가 동작하게 됩니다. 다음은 인터셉터를 적용한 Alamofire 요청 예제입니다.

session.request("https://api.example.com/users", method: .get).response { response in
    // 인터셉터에서 처리한 결과 출력
    if let data = response.data {
        print(String(data: data, encoding: .utf8))
    }
}

위 코드에서는 인터셉터가 응답을 인터셉트하고, 상태 코드에 따라 처리한 결과를 출력합니다.

결론

이번 포스트에서는 Alamofire의 응답 인터셉터를 활용하는 방법에 대해 알아보았습니다. 응답 인터셉터를 사용하면 서버 응답에 대해 원하는 작업을 수행할 수 있으며, 예제 코드를 통해 간단하게 사용하는 방법을 살펴보았습니다. 추가적인 기능이 필요한 경우 Alamofire의 공식 문서나 매뉴얼을 참고하여 자세한 내용을 확인해보세요. ```

Reference: