[swift] Moya와 ObjectMapper를 사용하여 API 호출 후 데이터 매핑하는 프로세스 이해하기 설명

이번 포스트에서는 Swift에서 API 호출 후 데이터를 매핑하기 위해 Moya와 ObjectMapper를 어떻게 사용하는지에 대해 알아보겠습니다. Moya는 네트워킹 라이브러리로, Alamofire를 기반으로 만들어졌으며, ObjectMapper는 JSON 데이터를 객체로 매핑하는 라이브러리입니다.

1. Moya와 ObjectMapper 설치하기

먼저, Moya와 ObjectMapper를 설치해야합니다. CocoaPods를 사용한다면 Podfile에 다음과 같이 추가합니다.

pod 'Moya'
pod 'ObjectMapper'

설치 후에는 import Moyaimport ObjectMapper로 라이브러리를 가져올 수 있습니다.

2. API 요청 모델 생성하기

API 요청에 필요한 모델을 생성해야합니다. 예를 들어, 사용자 정보를 가져오는 API 요청 모델은 다음과 같을 수 있습니다.

struct UserRequest: TargetType {
    var baseURL: URL { return URL(string: "https://api.example.com")! }
    var path: String = "/users"
    var method: Moya.Method = .get
    var task: Task = .requestPlain
    var headers: [String: String]? = nil
    
    // ...
}

TargetType 프로토콜을 채택하여 요청에 필요한 속성들을 정의합니다.

3. API 요청하기

Moya를 사용하여 API를 호출합니다. 이때, 생성한 API 요청 모델과 매핑할 데이터 모델을 지정해야합니다. 예를 들어, 사용자 정보를 받아와 매핑할 데이터 모델은 다음과 같을 수 있습니다.

class User: Mappable {
    var id: Int?
    var name: String?
    var email: String?
    
    required init?(map: Map) {}
    
    func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
        email <- map["email"]
    }
}

API 요청 후 데이터를 매핑하기 위해 Mappable 프로토콜을 채택하고, mapping(map:) 메서드를 구현합니다.

let provider = MoyaProvider<UserRequest>()
provider.request(.getUsers) { result in
    switch result {
    case let .success(response):
        do {
            let user = try response.mapObject(User.self)
            // 데이터 매핑 후 처리 로직 작성
        } catch {
            // 매핑 에러 처리
        }
    case let .failure(error):
        // API 요청 실패 처리
    }
}

MoyaProvider 인스턴스를 생성한 후, request(_:completion:) 메서드를 호출하여 API를 요청합니다. 응답이 성공한 경우, ObjectMapper의 mapObject(_:)" 메서드를 사용하여 데이터를 매핑합니다.

4. 데이터 처리하기

매핑된 데이터를 활용하여 필요한 로직을 작성합니다. 예를 들어, 사용자 정보를 출력하는 코드는 다음과 같을 수 있습니다.

if let user = user {
    print("ID: \(user.id ?? 0)")
    print("Name: \(user.name ?? "")")
    print("Email: \(user.email ?? "")")
}

위 예제에서는 매핑된 사용자 정보를 Optional 바인딩을 통해 안전하게 처리하고, 필요한 정보를 출력합니다.

결론

이렇게 Moya와 ObjectMapper를 함께 사용하여 Swift에서 API 호출 후 데이터를 매핑하는 프로세스를 이해해보았습니다. Moya와 ObjectMapper는 각각 네트워킹과 데이터 매핑을 간편하게 처리해주는 강력한 도구입니다. 다음번에 API 호출 및 데이터 매핑이 필요한 프로젝트를 진행할 때, 이러한 라이브러리를 활용해보시기 바랍니다.

참고 자료