[swift] Swift Moya를 사용하여 RESTful API 호출하기

Swift에서 RESTful API를 호출하려면 Moya라이브러리를 사용할 수 있습니다. Moya는 Alamofire를 기반으로한 네트워크 추상화 라이브러리이며, API 요청과 응답을 쉽게 처리할 수 있게 해줍니다.

Moya 설치하기

Moya를 사용하려면 먼저 프로젝트에 의존성을 추가해야 합니다. CocoaPods를 사용한다면 Podfile에 다음과 같이 추가합니다.

pod 'Moya'

그리고 터미널에서 pod install 명령어를 실행하여 Moya를 설치합니다.

API 요청 모델 정의하기

API 요청을 위한 모델을 정의해야 합니다. Moya에서는 TargetType 프로토콜을 구현하여 API의 엔드포인트, HTTP 메소드, 파라미터 등을 정의합니다. 예를 들어, 사용자 정보를 가져오는 API 요청 모델은 다음과 같이 정의할 수 있습니다.

import Moya

enum UserService {
    case getUser(id: Int)
}

extension UserService: TargetType {
    var baseURL: URL {
        return URL(string: "https://api.example.com")!
    }
    
    var path: String {
        switch self {
        case .getUser(let id):
            return "/users/\(id)"
        }
    }
    
    var method: Moya.Method {
        return .get
    }
    
    var sampleData: Data {
        return Data()
    }
    
    var task: Task {
        return .requestPlain
    }
    
    var headers: [String: String]? {
        return nil
    }
}

API 호출하기

Moya를 사용하여 API를 호출하는 방법은 간단합니다. API를 호출할 때에는 Provider를 생성하고 해당 Provider의 request 함수를 호출합니다.

import Moya

let provider = MoyaProvider<UserService>()
    
provider.request(.getUser(id: 123)) { result in
    switch result {
    case let .success(response):
        // API 호출 성공
        do {
            let user = try response.map(User.self)
            print(user)
        } catch {
            print("JSON 파싱 실패: \(error)")
        }
    case let .failure(error):
        // API 호출 실패
        print("API 호출 실패: \(error)")
    }
}

위의 예시에서는 getUser API를 호출하고 응답을 User 객체로 매핑하여 출력하고 있습니다.

결론

Swift에서 RESTful API를 호출하기 위해 Moya 라이브러리를 사용하는 방법을 알아보았습니다. Moya는 추상화된 네트워크 라이브러리로써 간편하게 API 호출을 처리할 수 있도록 도와줍니다.

참고 자료: