[swift] 스위프트 아폴로에서의 GraphQL 사용

개요

GraphQL은 Facebook에서 개발된 쿼리 언어로, 클라이언트에서 필요한 데이터를 효율적으로 요청하고 응답받을 수 있는 기술입니다. 스위프트에서는 아폴로(Apollo)라는 라이브러리를 사용하여 GraphQL을 쉽게 구현할 수 있습니다. 이번 글에서는 스위프트 아폴로를 사용하여 GraphQL을 어떻게 활용하는지 알아보겠습니다.

설치

스위프트 프로젝트에 아폴로를 설치하기 위해서는 CocoaPods를 사용할 수 있습니다. Podfile에 다음과 같이 아폴로 라이브러리를 추가해주세요.

pod 'Apollo', '~> 0.41'

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

아폴로 설정하기

아폴로를 사용하기 위해서는 API 엔드포인트(URL)과 스키마 파일(schema file)이 필요합니다. 스키마 파일은 GraphQL API 서버에서 제공하는 것이며, 아폴로 CLI를 사용하여 다운로드할 수 있습니다. 먼저, 터미널에서 아래 명령어로 아폴로 CLI를 설치합니다.

npm install -g apollo

그리고 프로젝트 폴더에서 다음 명령어를 실행하여 스키마 파일을 다운로드합니다.

apollo schema:download --endpoint=<API 엔드포인트> --output=schema.json

스키마 파일을 다운로드하면 프로젝트 폴더에 schema.json 파일이 생성됩니다.

이제 Xcode 프로젝트에서 schema.json 파일을 추가합니다. 프로젝트 네비게이터에서 프로젝트 파일을 선택한 뒤, Build Phases 탭에서 Add Files 버튼을 클릭하여 schema.json 파일을 선택합니다.

코드 작성하기

이제 GraphQL 쿼리를 작성하고, 아폴로를 사용하여 데이터를 요청하는 코드를 작성해보겠습니다. 아래는 간단한 예제 코드입니다.

import Apollo

// 아폴로 클라이언트 초기화
let apollo = ApolloClient(url: URL(string: "<API 엔드포인트>")!)

// GraphQL 쿼리 정의
let query = YourQuery()

// 아폴로로 데이터 요청
apollo.fetch(query: query) { result in
    switch result {
    case .success(let graphQLResult):
        if let data = graphQLResult.data {
            // 데이터 처리
        }
    case .failure(let error):
        // 에러 처리
    }
}

위 코드에서 YourQuery()는 실제로 요청할 GraphQL 쿼리를 정의하는 코드입니다. 여기에서는 프로젝트에 맞는 적절한 쿼리를 작성해야 합니다.

결과 처리하기

아폴로로 데이터를 요청하면 비동기로 응답이 옵니다. 응답 결과는 result 매개변수로 반환되며, 성공적인 경우 graphQLResult.data에서 데이터를 얻을 수 있습니다. 데이터를 적절하게 처리하고, 실패한 경우에는 error 매개변수에서 에러를 처리할 수 있습니다.

결론

스위프트 아폴로를 사용하면 GraphQL을 간편하게 구현할 수 있습니다. 설치와 설정, 그리고 코드 작성과 결과 처리에 대해 알아보았습니다. 이를 통해 스위프트로 GraphQL을 활용하는 방법을 익힐 수 있습니다.

더 자세한 내용은 아폴로 공식 문서를 참고하세요.