[swift] Moya와 ObjectMapper를 활용한 JSON 응답을 모델 객체로 변환하는 코드 구현 예시 설명
소개
Moya는 Alamofire를 기반으로한 네트워크 추상화 라이브러리입니다. ObjectMapper는 Swift에서 JSON 데이터를 모델 객체로 변환하는 라이브러리입니다. 이 두 라이브러리를 함께 사용하면 서버로부터 받은 JSON 응답을 손쉽게 모델 객체로 변환할 수 있습니다.
설치
먼저 Cocoapods를 통해 Moya와 ObjectMapper를 설치합니다. Podfile에 다음과 같이 추가합니다.
pod 'Moya'
pod 'ObjectMapper'
그리고 터미널에서 다음 명령어를 실행하여 의존성을 설치합니다.
$ pod install
코드 구현
- 먼저 모델 클래스를 만듭니다. 예시로
User
모델을 만들어보겠습니다.
import ObjectMapper
struct User: Mappable {
var id: Int?
var name: String?
var email: String?
init?(map: Map) {}
mutating func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
email <- map["email"]
}
}
- 다음으로 Moya의 Provider를 생성합니다. 예시로
GitHubProvider
를 생성해보겠습니다.
import Moya
let GitHubProvider = MoyaProvider<GitHubAPI>()
- 네트워크 요청을 보내고 응답을 수신하는 코드를 작성합니다.
GitHubProvider.request(.getUser(id: "1")) { result in
switch result {
case .success(let response):
do {
let user = try response.mapObject(User.self)
print(user)
} catch {
print(error)
}
case .failure(let error):
print(error)
}
}
위의 코드에서 getUser
는 API endpoint로 사용자 정보를 가져오는 메소드입니다. 응답이 성공적으로 도착하면 response.mapObject(User.self)
를 통해 JSON 응답을 User
모델로 매핑합니다. mapObject
는 ObjectMapper 프레임워크의 메소드입니다.
결론
Moya와 ObjectMapper를 함께 사용하면 JSON 응답을 모델 객체로 쉽게 변환할 수 있습니다. Moya는 네트워크 요청을 추상화하여 편리하게 다룰 수 있게 해주고, ObjectMapper는 JSON 데이터를 모델로 변환하는 데 도움을 줍니다. 이 두 라이브러리를 통해 코드 간소화와 유지보수성 향상을 할 수 있습니다.