[iOS] Status Code에 대해 + 처리하는 법

린다·2021년 10월 27일
0

Learning iOS

목록 보기
8/13
post-thumbnail

HTTP 응답 코드는 5개의 클래스로 구분됩니다. 상태 코드는 총 세자리로 구성되며 첫번째 자리 숫자로 클래스를 구분할 수 있습니다.

클래스의미
1xx(정보)요청을 받았으며 프로세스를 계속한다.
2xx(성공)요청을 성공적으로 받았으며 인식했고 수용했다.
3xx(리다이렉션)요청 완료를 위해 추가 작업 조치가 필요하다.
4xx(클라이언트 오류)요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
5xx(서버 오류)서버가 명백히 유효한 요청에 대해 충족을 실패했다.

아래는 네이버의 파파고 API를 활용한 예제 중 일부 코드입니다.
번역 버튼을 누르면 작성한 내용을 지정한 언어로 번역하여 아래의 textView에 보여주는 과정을 구현했습니다. 기존에는 status code에 대한 예외처리를 하지 않은 간단한 코드였으나 다양한 상황에 대처하기 위해 status code에 대해 예외처리를 해주었습니다!
이때 실제 API를 활용하여 result를 받아오는 코드는 싱글톤 패턴을 활용하여 TranslatedAPIMangaer.swift 내부에 구현한 상태입니다.

let json = JSON(value)
let code = response.response?.statusCode ?? 500

서버로부터 결과값을 받은 후 status code와 결과값을 escpaing closure를 사용하여 외부에서 사용할 수 있도록 설정해주었습니다.

@IBAction func translateButtonTapped(_ sender: UIButton) {
        guard let text = inputText.text else {return}
        TranslatedAPIManager.shared.fetchTranslateData(text) { code, json in
            switch code {
            case 200:
                print("성공: \(json)")
                self.translateText = json["message"]["result"]["translatedText"].stringValue
            case 400:
                print("실패: \(json)")
                self.translateText = json["errorMessage"].stringValue
            default:
                print("오류")
            }
        }
    }

switch 문을 활용하여 200, 즉 성공한 경우에는 결과값을 textView에 반영해주었고 400, 즉 클라이언트 오류가 발생한 경우에는 errorMessage를 띄워주는 방식으로 오류를 처리해주었습니다.

0개의 댓글