Swift Moya는 iOS 애플리케이션 개발을 위한 네트워킹 라이브러리로, 간편하고 유연한 네트워크 요청을 처리할 수 있습니다. 때로는 서버에서 반환되는 에러 코드를 확인해야 할 때가 있습니다. 이 게시물에서는 Swift Moya를 사용하여 에러 코드를 확인하는 방법에 대해 알아보겠습니다.
1. 네트워크 요청
첫 번째 단계는 Moya를 사용하여 서버에 네트워크 요청을 보내는 것입니다. Moya는 Alamofire를 기반으로 구축되었으므로, 네트워크 요청은 Alamofire와 유사한 방식으로 작성됩니다.
import Moya
let provider = MoyaProvider<YourAPI>()
// 네트워크 요청
provider.request(.yourEndpoint) { result in
switch result {
case let .success(response):
// 성공
// 에러 코드 확인은 이 후 작업에서 진행됩니다.
case let .failure(error):
// 실패
print(error.localizedDescription)
}
}
위의 예제에서 provider
는 MoyaProvider로 초기화됩니다. YourAPI
는 Moya의 타겟 타입입니다. ‘yourEndpoint’는 서버의 엔드포인트를 나타내며, 이 예제에서는 변경되어야 합니다. 네트워크 요청은 provider.request
를 호출하여 수행됩니다. 요청이 성공하면 .success
케이스에 대한 스위치 문이 실행되고, 실패하면 .failure
에 대한 스위치 문이 실행됩니다.
2. 에러 코드 확인
네트워크 요청이 성공하면, 서버에서 반환된 응답을 처리해야 합니다. 이때 응답의 에러 코드를 확인하여 적절한 작업을 수행할 수 있습니다.
provider.request(.yourEndpoint) { result in
switch result {
case let .success(response):
do {
// 응답을 디코딩하여 처리
} catch {
// 디코딩 오류 처리
}
case let .failure(error):
// 에러 코드 확인
if let moyaError = error as? MoyaError {
switch moyaError {
case .underlying(let error, _):
// 기본 에러 처리
print(error.localizedDescription)
case .statusCode(let response):
// 상태 코드 확인
let statusCode = response.statusCode
print("Status Code: \(statusCode)")
// 상태 코드에 따른 추가 작업 수행
}
}
}
}
네트워크 요청이 성공한 경우, 응답을 디코딩하여 적절한 작업을 수행할 수 있습니다. 디코딩이 실패하면 catch
블록에서 오류 처리를 할 수 있습니다.
네트워크 요청이 실패한 경우, .failure
케이스에 대한 스위치 문이 실행됩니다. 이 때 error
매개변수는 MoyaError 타입으로 캐스팅할 수 있습니다. MoyaError에는 .underlying
과 .statusCode
등의 여러 케이스가 있습니다. .statusCode
케이스에서는 서버의 상태 코드를 확인할 수 있으며, 이를 기반으로 추가 작업을 수행할 수 있습니다.
이렇게 해서 Moya를 사용하여 에러 코드를 확인하는 방법에 대해 알아보았습니다. 이를 통해 네트워킹 과정에서 발생하는 에러를 더욱 잘 처리할 수 있을 것입니다.