GraphQL em Swift: Guia Completo da Biblioteca Apollo iOS

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Biblioteca Apollo iOS para trabalhar com GraphQL em Swift



Apollo iOS é uma biblioteca poderosa e flexível para trabalhar com GraphQL no ecossistema Apple. Ela fornece aos desenvolvedores iOS e macOS uma ferramenta conveniente para executar consultas, mutações e assinaturas em servidores GraphQL. Ao contrário da API REST, o GraphQL permite que o cliente solicite apenas os dados necessários, reduzindo o volume de tráfego e acelerando o funcionamento dos aplicativos. O Apollo iOS suporta totalmente o Swift, incluindo recursos modernos da linguagem, como async/await, Combine e SwiftUI.



Principais recursos do Apollo iOS

  • Geração de código: Criação automática de modelos de dados type-safe com base no esquema GraphQL.
  • Cache: Suporte integrado para cache normalizado para otimizar consultas repetidas.
  • Suporte a Swift Concurrency: Integração completa com async/await para operações assíncronas.
  • Assinaturas via WebSocket: Implementação de atualizações em tempo real com GraphQL subscriptions.
  • Combine e SwiftUI: Possibilidade de uso com frameworks reativos da Apple.
  • Multiplataforma: Funciona em iOS, macOS, tvOS e watchOS.


Instalação da biblioteca

Para instalar o Apollo iOS, use o Swift Package Manager. Adicione o pacote no Xcode através do menu File → Add Packages e informe a URL:

https://github.com/apollographql/apollo-ios.git

Versão: última estável (no momento da escrita — 1.15.0).



Configuração do Apollo Client

O primeiro passo é criar uma instância do ApolloClient com a URL do seu servidor GraphQL. Exemplo de configuração básica:

import Apollo

class NetworkService { static let shared = NetworkService() private(set) lazy var apollo: ApolloClient = { let url = URL(string: "https://api.example.com/graphql")! return ApolloClient(url: url) }()}


Executando consultas (Queries)

O Apollo iOS gera código com base no esquema GraphQL. Primeiro, defina a consulta em um arquivo .graphql:

query GetUser($id: ID!) {    user(id: $id) {        id        name        email        posts {            title        }    }}

Após a geração do código, execute a consulta:

import Apollo

func fetchUser(id: String) async throws -> GetUserQuery.Data.User? { let query = GetUserQuery(id: id) let result = try await NetworkService.shared.apollo.fetch(query: query) return result.data?.user}


Mutações (Mutation)

Para alterar dados, use mutações. Exemplo de criação de um novo post:

mutation CreatePost($title: String!, $content: String!) {    createPost(input: { title: $title, content: $content }) {        id        title        createdAt    }}

Executando a mutação em Swift:

func createPost(title: String, content: String) async throws -> CreatePostMutation.Data.CreatePost? {    let mutation = CreatePostMutation(title: title, content: content)    let result = try await NetworkService.shared.apollo.perform(mutation: mutation)    return result.data?.createPost}


Trabalhando com assinaturas (Subscriptions)

Para atualizações em tempo real, use assinaturas. Exemplo de assinatura de novas mensagens:

subscription OnNewMessage {    newMessage {        id        text        sender {            name        }    }}

Implementação em Swift usando Combine:

import Combine

var cancellables = Set<AnyCancellable>()

func subscribeToMessages() { let subscription = OnNewMessageSubscription() NetworkService.shared.apollo.subscribe(subscription: subscription) .sink { completion in print("Subscription

Recommendations