Uso de GraphQL em Swift: bibliotecas Apollo e Relay para iOS/macOS

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

Bibliotecas GraphQL para Swift (iOS/macOS): guia completo



GraphQL é uma linguagem de consulta moderna para APIs que permite que os clientes solicitem apenas os dados de que precisam. Para desenvolvedores Swift que criam aplicativos para iOS e macOS, existem bibliotecas poderosas que simplificam a integração com servidores GraphQL. Neste artigo, veremos duas bibliotecas principais: Apollo iOS e Relay (através de wrappers Swift), além de fornecer exemplos práticos de código.



O que é GraphQL e por que é importante para Swift?



GraphQL resolve o problema de overfetching e underfetching de dados, que ocorrem frequentemente ao usar APIs REST. Em Swift, isso é especialmente relevante para aplicativos móveis, onde cada kilobyte extra de dados pode afetar o desempenho e o tempo de carregamento. As principais vantagens do GraphQL para iOS/macOS:



  • Consultas flexíveis — o cliente decide quais campos receber
  • Tipagem forte — esquemas GraphQL geram automaticamente tipos Swift
  • Suporte a assinaturas — atualizações em tempo real via WebSocket
  • Ponto de entrada único — um endpoint para todas as consultas


Biblioteca Apollo iOS



Apollo iOS é a biblioteca GraphQL mais popular para Swift, desenvolvida pela Apollo GraphQL. Ela fornece um conjunto completo de ferramentas para trabalhar com GraphQL: desde geração de código até cache e tratamento de erros.



Instalação do Apollo iOS



Para instalar, use o Swift Package Manager. Adicione a dependência ao seu Package.swift:



// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/apollographql/apollo-ios.git", from: "1.0.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "Apollo", package: "apollo-ios") ]) ])


Também pode ser instalado via CocoaPods ou Carthage, mas o SPM é o método recomendado.



Configuração do cliente Apollo



Crie uma instância de ApolloClient com a URL do seu servidor GraphQL:



import Apollo

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


Exemplo de consulta usando Apollo iOS



Suponha que você tenha um esquema com o tipo User e os campos id, name, email. Vamos criar uma consulta:



import Apollo

// Define a consulta GraphQL (geralmente em um arquivo .graphql)let query = """ query GetUser($id: ID!) { user(id: $id) { id name email } }"""

// Executa a consultaNetworkManager.shared.apollo.fetch(query: query, variables: ["id": "123"]) { result in switch result { case .success(let graphQLResult): if let user = graphQLResult.data?.user { print("User: \\(user.name), Email: \\(user.email)") } case .failure(let error): print("Error: \\(error)") }}


Observe: o Apollo gera automaticamente tipos Swift para suas consultas (por exemplo, GetUserQuery), se você usar sua ferramenta de geração de código. Para isso, execute apollo-ios-cli com seu esquema.



Mutações e assinaturas



O Apollo suporta mutações (alteração de dados) e assinaturas (tempo real). Exemplo de mutação:



let mutation = """    mutation UpdateUser($id: ID!, $name: String!) {        updateUser(id: $id, name: $name) {            id            name        }    }"""

NetworkManager.shared.apollo.pe

Recommendations