Tutorial Completo para Crear una API GraphQL con Node.js y Apollo

Tutorial Completo para Crear una API GraphQL con Node.js y Apollo

Cómo Construir una API GraphQL con Apollo Server: Tutorial Paso a Paso

Introducción

En este tutorial, aprenderás a construir una API GraphQL utilizando Apollo Server y Node.js. Este contenido está pensado para desarrolladores con conocimientos básicos en JavaScript y Node.js que quieren dar un paso adelante y adentrarse en el desarrollo backend moderno con GraphQL. Cubriremos desde la configuración del entorno hasta la integración con una base de datos y pruebas básicas para tu API.

Este GraphQL Node.js tutorial te guiará paso a paso para que comprendas la arquitectura y buenas prácticas al crear tu API. También incluimos bloques de código claros y explicaciones detalladas para facilitar el aprendizaje.


¿Qué es GraphQL y por qué usar Apollo Server?

GraphQL es un lenguaje y runtime para realizar consultas en APIs, que permite obtener exactamente los datos que necesitas, ni más ni menos. A diferencia de REST, GraphQL evita múltiples endpoints y favorece la eficiencia y flexibilidad.

Apollo Server es una de las herramientas más populares para implementar servidores GraphQL en Node.js. Nos brinda un ecosistema sólido y fácil integración con bases de datos, autorización, manejo de errores y otros.


Requisitos previos

  • Conocimientos básicos en JavaScript y Node.js
  • Node.js instalado (versión 14+ recomendada)
  • npm o yarn como gestor de paquetes

1. Configurar el entorno de desarrollo

Primero, crea una carpeta para tu proyecto e inicia npm:

Luego, instala las dependencias principales:

apollo-server es el paquete principal para levantar el servidor GraphQL.

graphql contiene las utilidades para definir esquemas y validación.


2. Definir el esquema y tipos GraphQL

El esquema describe las capacidades de tu API: los tipos de datos y las operaciones disponibles (queries y mutations).

Crea el archivo index.js y define un esquema básico de ejemplo para un sistema de gestión de libros:

Explicación:

  • Book: tipo personalizado con campos id, title y author.
  • Query: define dos consultas, books para obtener todos los libros y book para obtener uno por id.
  • Mutation: permite agregar un libro.

3. Crear los resolvers

Los resolvers contienen la lógica para responder las consultas y mutaciones del esquema.

Añade el siguiente código en index.js debajo de typeDefs:

Este código:

  • Simula una base de datos con un array books.
  • Resuelve consultas y mutaciones manipulando este array.

4. Inicializar Apollo Server y levantar el servidor

El siguiente paso es crear la instancia de Apollo Server y que comience a escuchar las peticiones.

Al final del archivo index.js añade:

Para ejecutar el servidor:

Al abrir el navegador en la URL que aparezca (usualmente http://localhost:4000/) verás Apollo Sandbox, una interfaz para interactuar con tu API.


5. Integración con base de datos

Usar una base de datos real es fundamental para desarrollo backend.

Ejemplo con SQLite y Prisma

Instalemos un ORM para facilitar operaciones con bases de datos. Aquí usaré Prisma y SQLite para simplicidad.

Configura prisma/schema.prisma para SQLite:

Crea la base de datos y aplica migrations:

Luego, adapta el servidor para usar Prisma.

Modifica index.js para incluir:

Finalmente, ejecuta nuevamente:

Con esto tu API GraphQL ya está conectada con una base de datos real.


6. Probar tu API GraphQL

Desde Apollo Sandbox o cualquier cliente GraphQL como Insomnia o Postman, puedes probar:

Consulta para obtener todos los libros:

Mutación para agregar un libro:

Consulta para un libro por id:


Buenas prácticas en desarrollo backend GraphQL

  • Validar y sanitizar entradas: evita inyección y errores inesperados.
  • Manejar errores en resolvers: responde con mensajes claros y códigos apropiados.
  • Limitar tamaño y complejidad de consultas: para evitar abuso (query complexity).
  • Documentar el esquema: facilita a consumidores entender la API.
  • Usar autenticación y autorización: proteger mutaciones y datos sensibles.

Conclusión

En este tutorial has aprendido cómo construir una API GraphQL con Apollo Server usando Node.js, desde lo más básico hasta integrar una base de datos real con Prisma y SQLite. Este enfoque es ideal para desarrollo backend moderno, donde las APIs deben ser flexibles, eficientes y fáciles de mantener.

Ahora te invito a que pruebes, extiendas y personalices tu API. Explora conceptos avanzados como suscripciones, federación y optimización de consultas para profundizar aún más.

¡Empieza a crear APIs potentes con GraphQL y Node.js hoy!


Recursos adicionales


¡Manos a la obra y buen desarrollo!