GraphQL es un lenguaje de consulta para APIs y un runtime para ejecutar esas consultas contra datos tipados. GraphQL permite a los clientes definir con precisión qué datos necesitan en cada petición, eliminando los problemas de over-fetching y under-fetching típicos de las APIs REST. El schema actúa como contrato entre cliente y servidor: define tipos, campos, relaciones y operaciones disponibles, y se autodocumenta mediante introspección.
El ecosistema actual de GraphQL se apoya en varios pilares. En el lado del servidor destacan Apollo Server 4 y GraphQL Yoga 5 como runtimes más extendidos en JavaScript, junto con implementaciones para otros lenguajes como gqlgen (Go), graphql-go, Strawberry y Ariadne (Python) o Netflix DGS y graphql-java. Frente al enfoque clásico schema-first han ganado tracción las librerías code-first como Pothos, TypeGraphQL o Nexus en TypeScript. Para resolver el problema N+1, DataLoader sigue siendo la solución estándar de batching y caching por petición.
En el lado del cliente, Apollo Client, urql y Relay dominan la integración con React, Vue o Svelte; todos soportan caché normalizada, mutaciones optimistas, persisted queries y las directivas @defer y @stream de la especificación incremental delivery. Para tiempo real, las subscriptions se sirven con WebSockets vía graphql-ws o sobre Server-Sent Events cuando no hace falta bidireccionalidad.
Para arquitecturas distribuidas, Apollo Federation 2 compone múltiples subgraphs autónomos en un supergraph que el Apollo Router expone a los clientes, con planificación de queries, métricas y caching de plan. GraphQL Mesh ofrece una alternativa que federa también fuentes REST, gRPC, OpenAPI o bases de datos como subgraphs virtuales.
Qué incluye este itinerario
- Fundamentos: qué es GraphQL, comparativa con REST, conceptos core, introspección y herramientas (GraphiQL, Apollo Sandbox).
- Schema Definition Language: SDL, tipos escalares, enums, interfaces, unions, input types y directivas personalizadas.
- Queries y mutations: sintaxis de consultas, mutaciones, variables, fragments, alias y directivas
@skip,@include,@defer,@stream. - Servidor GraphQL: Apollo Server 4 y Yoga 5, resolvers, context, data sources, error handling, DataLoader y enfoques schema-first frente a code-first (Pothos, TypeGraphQL).
- Cliente GraphQL: Apollo Client con React, useQuery, useMutation, caché normalizada, UI optimista y persisted queries.
- Subscriptions: tiempo real con WebSockets (
graphql-ws), PubSub, useSubscription, filtrado y alternativa SSE. - Autenticación y autorización: JWT en context, directivas
@authy@hasRole, permisos por campo y graphql-shield. - Apollo Federation 2: supergraph, subgraphs, Apollo Router, entity references, composición de schemas y graphql-mesh.
- Producción: paginación cursor/offset (Relay Connections), análisis de complejidad y profundidad, evolución del schema, testing con Jest y monitorización con Apollo Studio.
- Proyecto integrador: API GraphQL completa con Apollo Server 4 o Yoga 5, DataLoader, subscriptions WebSockets, autorización por directivas y tests con Jest.
Público objetivo
- Desarrolladores backend que diseñan y construyen APIs para aplicaciones web y móviles.
- Desarrolladores frontend que consumen APIs y quieren un contrato tipado con el servidor.
- Arquitectos de software que evalúan GraphQL como alternativa o complemento a REST para sus sistemas.
- Equipos de microservicios que necesitan componer múltiples APIs en un gateway unificado con Federation 2.
- Desarrolladores full-stack que buscan un stack completo con Apollo Server, Apollo Client y React.
Prerrequisitos: conocimientos de JavaScript/TypeScript, conceptos básicos de APIs REST (HTTP, JSON, endpoints), familiaridad con React para el módulo de cliente y nociones de bases de datos relacionales para los ejercicios de servidor. No se requiere experiencia previa con GraphQL.