Moya는 iOS 앱 개발을 위한 네트워킹 라이브러리로, Alamofire를 기반으로 구현되었습니다. Moya를 사용하면 쉽게 API 요청을 보낼 수 있고 응답을 처리할 수 있습니다. 이번 포스트에서는 Swift Moya에서 응답을 처리하는 방법을 알아보겠습니다.
Moya 기본 설정
먼저 Moya를 설치하고 기본 설정을 해야 합니다. Moya는 CocoaPods 또는 Swift Package Manager를 통해 설치할 수 있습니다. 프로젝트의 Podfile
에 다음과 같은 내용을 추가한 후, pod install
을 실행합니다.
platform :ios, '10.0'
use_frameworks!
target 'MyApp' do
pod 'Moya'
end
설치가 완료되면, 해당 파일을 열고 Moya를 import합니다.
import Moya
Provider 생성
Moya를 사용하기 위해서는 MoyaProvider
를 생성해야 합니다. MoyaProvider
는 요청을 처리하고 응답을 받는 객체입니다.
let provider = MoyaProvider<API>()
여기서 API
는 Moya에서 사용할 서비스의 이름입니다. API
는 enum
으로 정의되며, 각 case는 실제 API 엔드포인트에 대응됩니다.
응답 처리
Moya를 사용하면 응답을 처리하기 위해 provider.request
메서드를 사용합니다. 이 메서드는 API 요청에 대한 응답을 비동기적으로 받아옵니다.
provider.request(.getUser(id: 1)) { result in
switch result {
case let .success(response):
// 성공적으로 응답을 받은 경우
do {
let user = try response.map(User.self)
// 응답 데이터를 원하는 타입으로 매핑하여 사용합니다.
} catch {
// 응답 데이터를 매핑하는 도중 에러가 발생한 경우
print("Error mapping response: \(error)")
}
case let .failure(error):
// 응답을 받지 못한 경우
print("Network error: \(error)")
}
}
위의 예제에서는 서버로부터 사용자의 정보를 가져오는 API를 호출하는 getUser
케이스를 사용하였습니다. 응답이 성공적으로 왔을 경우, response.map
메서드를 사용하여 응답 데이터를 지정한 타입으로 매핑할 수 있습니다. 매핑하는 과정에서 에러가 발생하면 catch
블록이 실행됩니다.
에러 처리
Moya는 응답에 대한 에러 처리를 간편하게 할 수 있도록 지원합니다. 각각의 API 케이스에 대해 var validationType: ValidationType
프로퍼티를 설정할 수 있습니다.
enum API {
case getUser(id: Int)
var validationType: ValidationType {
return .successCodes
}
// ...
}
위의 예제에서는 validationType
을 .successCodes
로 설정했습니다. 이 경우, 응답의 상태 코드가 200-299 사이인 경우에만 성공으로 간주됩니다. 특정 상태 코드에 대해서만 에러 처리를 하려면 switch
문을 사용하여 처리할 수 있습니다.
switch response.statusCode {
case 200..<300:
// 성공 상태 코드
case 400..<500:
// 클라이언트 에러
case 500..<600:
// 서버 에러
default:
// 그 외의 상태 코드
}
결론
이번 포스트에서는 Swift Moya에서 응답을 처리하는 방법에 대해 알아보았습니다. Moya는 간편한 네트워킹 처리를 제공하므로 iOS 앱 개발시 유용하게 사용할 수 있습니다. 추가로 Moya는 테스트, 취소 및 재시도 등의 기능을 지원하기도 하니, 자세한 내용을 공식 문서를 참고하시기 바랍니다.