[swift] Swift Moya에서 인증 플러그인 사용하기

Swift Moya는 Alamofire를 기반으로 한 네트워킹 라이브러리로, 간편한 API 요청 및 응답 처리를 제공합니다. 이 라이브러리를 사용하여 서버에서 보호된 API를 호출하려면, 토큰 기반의 인증을 사용해야 할 수 있습니다. 이 글에서는 Swift Moya에서 인증 플러그인을 사용하는 방법에 대해 살펴보겠습니다.

1. MoyaProvider 생성

먼저, 인증 플러그인을 사용하기 위해 MoyaProvider를 생성해야 합니다. MoyaProvider는 Alamofire Session 인스턴스에 기본값을 제공하는 클래스입니다. 아래와 같이 MoyaProvider를 생성합니다.

let provider = MoyaProvider<YourAPI>(plugins: [YourAuthenticationPlugin()])

여기서 YourAPI는 Moya에서 사용할 API 타겟을 나타내는 enum이고, YourAuthenticationPlugin()은 사용자 정의 인증 플러그인입니다.

2. 인증 플러그인 구현

인증 플러그인은 Moya.PluginType 프로토콜을 구현하는 클래스입니다. 이 프로토콜은 prepare(_:target:) 메서드를 요구합니다. 아래는 인증 플러그인의 예시입니다.

import Foundation
import Moya

class YourAuthenticationPlugin: PluginType {
    func prepare(_ request: URLRequest, target: TargetType) -> URLRequest {
        guard let token = YourAuthManager.shared.getToken() else {
            return request
        }
        
        var mutableRequest = request
        mutableRequest.addValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
        
        return mutableRequest
    }
}

위의 예시 코드에서는 YourAuthManager 클래스를 통해 토큰을 가져온 후, Authorization 헤더에 토큰을 추가하여 URLRequest를 수정하는 작업을 수행합니다.

3. API 호출

이제 인증 플러그인을 사용하는 API 호출을 수행할 수 있습니다. provider를 사용하여 Moya 타겟을 호출하면, 요청 시 자동으로 인증 플러그인이 적용됩니다.

provider.request(.getYourData) { result in
    switch result {
    case let .success(response):
        // API 호출 성공 시 처리
        // response에서 데이터 추출
        
    case let .failure(error):
        // API 호출 실패 시 처리
        // 에러 처리 로직
    }
}

위의 예시 코드에서는 provider.request를 사용하여 .getYourData API를 호출하고, 요청 결과에 따라 성공 및 실패 처리를 수행합니다.

마치며

위의 단계를 따라서 Swift Moya에서 인증 플러그인을 사용하는 방법을 배웠습니다. 인증 플러그인을 통해 보호된 API에 쉽게 접근할 수 있으며, 앱의 보안과 효율성을 향상시킬 수 있습니다.

참고 자료