Introducción a GraphQL y Swift
GraphQL es un lenguaje de consulta moderno para APIs, desarrollado por Facebook. A diferencia de REST, donde se obtiene una estructura de datos fija, GraphQL permite al cliente (tu aplicación en Swift) solicitar solo los campos que realmente necesita. Esto es especialmente relevante para desarrolladores móviles que trabajan con iOS y macOS: menos datos significa menos tráfico, carga más rápida y mejor experiencia de usuario.
En este tutorial, analizaremos cómo conectar una API GraphQL a tu proyecto Swift, realizar consultas y mutaciones básicas. Usaremos el cliente oficial Apollo iOS, la biblioteca más popular y compatible para trabajar con GraphQL en el ecosistema Apple.
Al final del artículo podrás:
- Configurar Apollo iOS en un proyecto de Xcode
- Escribir y ejecutar una consulta GraphQL (Query)
- Enviar una mutación (Mutation) para modificar datos
- Manejar respuestas y errores
1. Configuración del proyecto e instalación de Apollo iOS
1.1. Creación de un nuevo proyecto
Abre Xcode y crea un nuevo proyecto (iOS App o macOS App). Elige el lenguaje Swift y la interfaz SwiftUI o UIKit; no es relevante, ya que el trabajo en red no depende del framework de UI.
1.2. Instalación mediante Swift Package Manager
Apollo iOS se conecta fácilmente a través de SPM. Ve a File → Add Packages... e ingresa la URL:
https://github.com/apollographql/apollo-ios.gitSelecciona la última versión estable (al momento de escribir esto, la 1.15.0) y agrega el paquete a tu target.
También instala Apollo Code Generation CLI, la herramienta para generar tipos Swift a partir del esquema GraphQL. La forma más sencilla es instalarlo mediante Homebrew:
brew install apollo-ios-cliSi Homebrew no está instalado, puedes usar npm:
npm install -g apollo-ios-cli1.3. Inicialización de la configuración
En la terminal, desde la raíz de tu proyecto, ejecuta:
apollo-ios-cli init --module-name YourAppName --schema-namespace GraphQLEste comando creará un archivo apollo-codegen-config.json y una carpeta GraphQL, donde se almacenarán tus archivos .graphql.
Ahora agrega el esquema del servidor al proyecto. Si el servidor proporciona schema.json o schema.graphqls, cópialo en la carpeta GraphQL. Si no, puedes usar el comando integrado para descargarlo:
apollo-ios-cli fetch-schema --endpoint=https://your-graphql-endpoint.com/graphql2. Escribimos la primera consulta GraphQL (Query)
2.1. Crear un archivo .graphql
En la carpeta GraphQL, crea un archivo Queries.graphql y escribe una consulta simple. Supongamos que tenemos una API para obtener una lista de usuarios:
query GetUsers { users { id name email }}2.2. Generación de código Swift
Ejecuta la generación de código desde la terminal:
apollo-ios-cli generateDespués de una generación exitosa, en la carpeta Sources/API (o en la que hayas especificado) aparecerá un archivo API.swift con los tipos GetUsersQuery, GetUsersQuery.Data, etc.
2.3. Ejecución de la consulta desde Swift
Ahora crearemos una instancia del cliente Apollo y ejecutaremos la consulta. En tu ContentView.swift (o cualquier otro archivo) escribe:
import Apolloimport SwiftUI
class NetworkManager { static let shared = NetworkManager() private(set) lazy var apollo = ApolloClient(url: URL(string: "https://your-graphql-endpoint.com/graphql")!)}
struct ContentView: View { @State private var users: [GetUsersQuery.Data.User] = [] var body: some View { List(users, id: \\.id) { user in VStack(alignment: .leading) { Text(user.name)