[swift] Swift로 HTTP 요청 에러 처리하기

Swift는 iOS 및 macOS 애플리케이션 개발을 위한 강력한 프로그래밍 언어입니다. 웹 서비스와의 통신을 위해 HTTP 요청을 보내는 것은 일반적인 작업 중 하나입니다. 하지만 때로는 서버에서 오류 응답을 받을 수 있습니다. 이러한 상황에 대처하기 위해 Swift에서 HTTP 요청 에러를 처리하는 방법에 대해 알아보겠습니다.

1. URLSession을 이용한 HTTP 요청

Swift에서 HTTP 요청을 보내기 위해 URLSession을 이용할 수 있습니다. 다음은 간단한 GET 요청을 보내는 예제입니다.

guard let url = URL(string: "https://api.example.com/data") else {
    print("Invalid URL")
    return
}

let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
    if let error = error {
        // 에러 처리
        print("Error: \(error.localizedDescription)")
        return
    }
    
    // 성공적인 응답 처리
    if let httpResponse = response as? HTTPURLResponse {
        if httpResponse.statusCode == 200 {
            // 데이터 처리
            if let data = data {
                // 데이터 파싱
                // ...
            }
        } else {
            // 서버에서 에러 응답
            print("Server Error: \(httpResponse.statusCode)")
        }
    }
}

task.resume()

2. 에러 처리하기

위의 예제에서는 dataTask(with:completionHandler:) 메서드의 completion handler에서 error 매개변수를 통해 에러 정보를 받아올 수 있습니다. 이를 이용하여 HTTP 요청에서 발생한 에러를 처리할 수 있습니다.

if let error = error {
    print("Error: \(error.localizedDescription)")
    // 에러 처리 로직
    return
}

3. 서버에서의 에러 응답 처리하기

서버에서 오류 응답을 받은 경우, HTTPURLResponse 객체를 통해 오류 상태 코드를 확인할 수 있습니다. 예를들어, 400 상태 코드는 클라이언트 요청 에러를 나타내며, 500 상태 코드는 서버 내부 에러를 나타냅니다.

if let httpResponse = response as? HTTPURLResponse {
    if httpResponse.statusCode == 200 {
        // 성공적인 응답 처리
        if let data = data {
            // 데이터 파싱
            // ...
        }
    } else {
        // 서버에서의 에러 응답 처리
        print("Server Error: \(httpResponse.statusCode)")
        // 에러 처리 로직
    }
}

마무리

이제 Swift에서 HTTP 요청 에러를 처리하는 방법에 대해 알아보았습니다. 이를 통해 애플리케이션에서 안정적인 웹 서비스 통신을 구현할 수 있습니다. 충분한 에러 처리를 통해 사용자 경험을 개선하고 예외 상황에 대처할 수 있습니다.

참고 자료