GraphQL API com Swift: tutorial passo a passo para iOS e 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

Introdução: Por que GraphQL e Swift?

O desenvolvimento moderno para iOS e macOS requer formas flexíveis e eficientes de interagir com o servidor. As APIs REST tradicionais frequentemente levam ao problema de over-fetching (obter dados desnecessários) ou under-fetching (falta de dados). O GraphQL resolve esses problemas, permitindo que o cliente solicite apenas os dados de que precisa, em uma única requisição.

Neste tutorial, criaremos um aplicativo completo em Swift que interagirá com uma API GraphQL. Você aprenderá como configurar o projeto, executar queries, mutations e tratar erros. Como cliente, usaremos o Apollo iOS — a biblioteca mais popular para trabalhar com GraphQL no ecossistema Apple.



Configuração do projeto e instalação do Apollo iOS

Criando um novo projeto

Abra o Xcode e crie um novo projeto de Aplicativo iOS ou macOS. Vamos nomeá-lo como GraphQLDemo.



Instalação do Apollo iOS via Swift Package Manager

  1. No Xcode, vá em File → Add Packages...
  2. Cole a URL do repositório do Apollo: https://github.com/apollographql/apollo-ios.git
  3. Selecione a versão estável mais recente e clique em Add Package.
  4. Certifique-se de que o pacote foi adicionado ao target do seu aplicativo.


Geração de código a partir do schema GraphQL

O Apollo usa geração de código para criar classes type-safe. Para isso, precisamos de um arquivo de schema (schema.graphqls) e arquivos com as queries (.graphql).

Crie uma pasta GraphQL no projeto e coloque lá:

  • schema.graphqls — baixe o schema da sua API ou use uma pública (por exemplo, Countries GraphQL API).
  • Queries.graphql — arquivo com suas queries.

Exemplo de conteúdo do Queries.graphql:

query GetCountries {  countries {    code    name    capital    currency  }}

Agora adicione uma Build Phase para gerar o código. No Xcode: Target → Build Phases → + → New Run Script Phase. Cole o script:

cd "${SRCROOT}/${TARGET_NAME}"./Pods/Apollo/scripts/run-bundled-codegen.sh codegen:generate --target=swift --includes=./**/*.graphql --localSchemaFile=./schema.graphqls ./GraphQL/API.swift

Nota: Nas versões modernas do Apollo iOS, usa-se apollo-ios-cli. Recomendamos consultar a documentação oficial para instruções atualizadas.



Executando consultas GraphQL (Queries)

Inicialização do cliente Apollo

Vamos criar um gerenciador para trabalhar com o Apollo. Abra o arquivo NetworkManager.swift:

import Foundationimport Apollo

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


Executando a consulta

Agora vamos executar a query GetCountries no nosso ViewController:

import UIKit

class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() fetchCountries() } private func fetchCountries() { NetworkManager.shared.apollo.fetch(query: GetCountriesQuery()) { result in switch result { case .success(let graphQLResult): if let countries = graphQLResult.data?.countries { for country in countries { print("\\(country.name) - \\(country.capital ?? "N/A")") }

Blogs

Book Recommendations