[swift] PromiseKit와 RESTful API 통신 방법

안녕하세요! 오늘은 Swift에서 비동기 처리를 위한 PromiseKit와 RESTful API 통신 방법에 대해 알아보겠습니다. PromiseKit은 Swift에서 비동기 작업을 보다 쉽게 다룰 수 있도록 도와주는 라이브러리입니다. RESTful API는 웹 서비스에서 자주 사용되는 API 디자인 패턴으로, HTTP 프로토콜을 통해 데이터를 전송하고 받을 수 있습니다.

PromiseKit 설치하기

먼저 PromiseKit를 설치해야 합니다. 프로젝트의 Podfile에 다음과 같이 PromiseKit을 추가합니다.

pod 'PromiseKit'

그리고 터미널에서 pod install 명령어를 실행하여 PromiseKit을 설치합니다.

RESTful API 통신하기

이제 실제로 RESTful API를 통해 데이터를 가져오는 방법에 대해 알아보겠습니다. 예를 들어, 서버에서 사용자의 정보를 가져오는 API가 있다고 가정해봅시다.

func getUserInfo() -> Promise<UserInfo> {
    return Promise { seal in
        let url = URL(string: "https://api.example.com/user")!
        let request = URLRequest(url: url)
        
        URLSession.shared.dataTask(with: request) { (data, response, error) in
            if let error = error {
                seal.reject(error)
            } else if let data = data {
                do {
                    let userInfo = try JSONDecoder().decode(UserInfo.self, from: data)
                    seal.fulfill(userInfo)
                } catch {
                    seal.reject(error)
                }
            }
        }.resume()
    }
}

위의 getUserInfo() 함수는 Promise<UserInfo>를 리턴하는 함수로, 서버에서 사용자의 정보를 가져와서 Promise로 감싸서 리턴합니다. URLSession을 사용하여 API 호출을 하고, 비동기 작업이 완료되면 seal.fulfill()을 사용하여 성공 결과를 전달합니다. 만약 에러가 발생하면 seal.reject()를 사용하여 에러를 전달합니다.

이제 getUserInfo() 함수를 사용하여 사용자 정보를 가져오는 예제를 살펴보겠습니다.

getUserInfo().done { userInfo in
    // 사용자 정보 가져오기 성공
    print(userInfo)
}.catch { error in
    // 사용자 정보 가져오기 실패
    print(error)
}

getUserInfo().done 메서드는 Promise의 성공 콜백입니다. 성공적으로 작업이 완료되면 해당 블록이 실행됩니다. 만약 작업이 실패하면 .catch 메서드의 실패 콜백이 실행됩니다.

결론

이렇게 PromiseKit를 사용하여 Swift에서 RESTful API 통신을 쉽게 할 수 있습니다. PromiseKit은 비동기 작업을 다루는 코드를 간결하게 작성할 수 있도록 도와주며, RESTful API를 사용하여 서버와 통신하는 작업을 보다 쉽게 처리할 수 있게 해줍니다. PromiseKit의 더 많은 기능과 사용법을 알고 싶다면 공식 문서를 참고해보세요.