Saltar al contenido

Lección 5 de 20 · Lectura y práctica

Quiz: Fundamentos de GraphQL y Configuración

Tipo de lección: QuizConcepto claveGraphQL es un lenguaje de consulta para APIs que permite a los clientes solicitar exactamente los datos que necesitan, nada más y nada menos. A diferencia de REST, donde cada endpoint devuelve.

Del concepto a la práctica

Taller de esta lección

Este quiz puede evaluar razonamiento, no memorización: presenta una operación, un esquema pequeño y una respuesta, y pide localizar la primera incompatibilidad. La clave es separar errores de sintaxis, validación del esquema y ejecución del resolver.

Ejemplo resuelto

Esquema: type Query { count: Int! }. Operación: query { count label }. La respuesta correcta identifica label como error de validación; el resolver de count ni siquiera debería ejecutarse. Si la operación pide solo count y el resolver devuelve "tres", el problema aparece durante la ejecución porque no se puede representar como Int.

  1. Escribe tres preguntas de opción múltiple con un único diagnóstico.

  2. Incluye una sobre nulabilidad, otra sobre args y otra sobre ejecución.

  3. Justifica cada respuesta con una regla observable.

  4. Verifica que ninguna alternativa dependa de una versión concreta de una herramienta.

Error frecuente: considerar que todo error ocurre dentro del resolver. Corrección: clasifica primero el momento del fallo.

Pruébalo

Crea una pregunta donde falte el argumento obligatorio id y otra donde el registro no exista.

Comprueba tu resultado

La primera se clasifica como validación; la segunda llega al resolver y devuelve null o el error definido por el contrato.

La coerción de salida importa

En graphql-js una cadena numérica como "3" puede convertirse a Int durante serialización; por eso no sirve como ejemplo inequívoco de fallo. Usa "tres" o 3.5. Para el campo raíz count:Int!, ese fallo deja data=null y errors con path=count. Un argumento id obligatorio ausente es otro caso: falla la validación y no inicia el resolver. Añade un contador de llamadas al fixture para distinguir ambos momentos.

Navegador, API y base de datos conectados por solicitudes, consultas y respuestas en sentidos opuestos.
CursaloMapa de práctica
Del navegador a los datos

El navegador envía una solicitud a la API. El servidor valida la operación y consulta los datos; después devuelve una respuesta que el navegador puede mostrar. La base de datos se comunica con el servidor y no directamente con el navegador.

Ver la infografía en tamaño completo ↗
Fuentes para profundizar

Tipo de lección: Quiz

Concepto clave

GraphQL es un lenguaje de consulta para APIs que permite a los clientes solicitar exactamente los datos que necesitan, nada más y nada menos. A diferencia de REST, donde cada endpoint devuelve una estructura fija de datos, GraphQL proporciona un único endpoint flexible. Imagina que estás en un restaurante: con REST, eliges un menú fijo (como "plato del día"), mientras que con GraphQL, construyes tu propio plato seleccionando ingredientes específicos.

La configuración con Next.js y Apollo Server combina un framework de React con un servidor GraphQL tipado. Esto significa que defines tipos de datos explícitamente en tu esquema, lo que previene errores y mejora la documentación automática. Es como tener un contrato claro entre el frontend y el backend, asegurando que ambos lados hablen el mismo idioma.

Cómo funciona en la práctica

Para configurar GraphQL con Next.js y Apollo Server, sigue estos pasos clave. Primero, instala las dependencias necesarias: npm install @apollo/server graphql en tu proyecto Next.js. Luego, crea un archivo para definir tu esquema GraphQL, por ejemplo, schema.ts, donde especifiques tipos como Query y Mutation.

Ejemplo de un esquema básico:

type Query {
  hello: String
}

type Mutation {
  updateMessage(newMessage: String): String
}

Después, configura Apollo Server en un archivo de API de Next.js (por ejemplo, pages/api/graphql.ts), definiendo resolvers que manejen las consultas. Finalmente, en el frontend, usa Apollo Client para conectar y realizar consultas a tu API.

Caso de estudio

Supongamos que estás construyendo una aplicación de blog con Next.js y GraphQL. Tu objetivo es permitir a los usuarios ver posts y sus comentarios, y suscribirse a nuevas publicaciones. Define un esquema tipado:

type Post {
  id: ID!
  title: String!
  content: String!
  comments: [Comment]
}

type Comment {
  id: ID!
  text: String!
  postId: ID!
}

type Query {
  posts: [Post]
  post(id: ID!): Post
}

type Subscription {
  newPost: Post
}

En la práctica, esto permite consultas como { posts { title comments { text } } } para obtener solo el título y comentarios de los posts, evitando sobrecargar la red con datos innecesarios. Las suscripciones se configuran con Apollo Server para notificar en tiempo real cuando se agrega un nuevo post.

Errores comunes

  • No tipar el esquema correctamente: Olvidar definir tipos explícitos puede llevar a errores en tiempo de ejecución. Usa herramientas como TypeScript o GraphQL Code Generator para automatizar esto.
  • Configurar Apollo Server sin manejar CORS: En entornos de desarrollo, asegúrate de habilitar CORS en tu servidor para permitir solicitudes desde el frontend de Next.js.
  • Ignorar la validación de consultas: GraphQL valida automáticamente las consultas contra el esquema, pero no implementar resolvers robustos puede causar respuestas vacías o errores.
  • No optimizar resolvers para N+1 queries: En consultas anidadas (como posts con comentarios), carga los datos de manera eficiente usando técnicas como batching o DataLoader.
  • Olvidar configurar suscripciones en producción: Las suscripciones requieren un transporte como WebSockets; asegúrate de configurar Apollo Server con subscriptions-transport-ws o alternativas modernas.

Checklist de dominio

  1. Instalar y configurar Apollo Server en un proyecto Next.js.
  2. Definir un esquema GraphQL tipado con tipos como Query, Mutation y Subscription.
  3. Crear resolvers básicos que devuelvan datos mock o de una base de datos.
  4. Realizar una consulta GraphQL desde el frontend usando Apollo Client.
  5. Configurar suscripciones para notificaciones en tiempo real.
  6. Validar que las consultas solo soliciten los campos necesarios.
  7. Probar la API con herramientas como GraphQL Playground o Apollo Studio.

Configura un servidor GraphQL básico con Next.js y Apollo Server

Sigue estos pasos para crear un servidor GraphQL funcional en tu proyecto Next.js:

  1. Inicia un nuevo proyecto Next.js usando npx create-next-app@latest y navega a la carpeta del proyecto.
  2. Instala las dependencias necesarias ejecutando npm install @apollo/server graphql.
  3. Crea un archivo schema.ts en la raíz del proyecto y define un esquema simple con un tipo Query que tenga un campo hello de tipo String.
  4. Crea un archivo pages/api/graphql.ts y configura Apollo Server: importa @apollo/server y graphql, define un resolver para hello que devuelva "¡Hola mundo!", y exporta el handler.
  5. Inicia el servidor de desarrollo con npm run dev y visita http://localhost:3000/api/graphql para verificar que el servidor esté corriendo.
  6. Usa una herramienta como GraphQL Playground (disponible en la misma URL) para ejecutar la consulta { hello } y confirmar que devuelva el mensaje esperado.
Pistas
  • Asegúrate de que el esquema en schema.ts esté correctamente exportado para usarlo en el servidor.
  • En pages/api/graphql.ts, recuerda manejar tanto GET como POST requests para compatibilidad con herramientas de consulta.
  • Si encuentras errores de CORS, agrega configuración adicional en Apollo Server para permitir orígenes cruzados.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con GraphQL Profesional con Next.js y Apollo Server: APIs Tipadas y Suscripciones

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.