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

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

Tutorial paso a paso para construir una API GraphQL con Apollo Server y Node.js

Aprender a construir una API GraphQL es una habilidad cada vez más demandada en el desarrollo backend. En este tutorial, te guiaré paso a paso para que puedas crear tu propia API GraphQL utilizando Apollo Server y Node.js, integrando una base de datos MongoDB para gestionar datos persistentemente.

Este tutorial está pensado para desarrolladores principiantes e intermedios que quieren consolidar sus conocimientos en desarrollo backend y entender cómo funciona una API GraphQL para principiantes.


Contenido


Preparación del entorno

Paso 1: Instalar Node.js

Antes de comenzar, asegúrate de tener instalado Node.js en tu equipo. Puedes descargarlo desde https://nodejs.org/.

Verifica la instalación con los comandos:

Paso 2: Crear un nuevo proyecto

Abre tu terminal o consola y crea una carpeta para el proyecto, luego inicializa con npm:

Paso 3: Instalar las dependencias necesarias

Necesitaremos instalar Apollo Server, GraphQL, y algunas otras librerías:

  • apollo-server: servidor GraphQL que facilite configurar rápidamente.
  • graphql: biblioteca para construir esquemas y ejecutar queries.
  • mongoose: ODM para conectar y manipular MongoDB.
  • dotenv: para manejar variables de entorno.

Definición del esquema GraphQL

El esquema define los tipos y las operaciones disponibles en nuestra API.

Paso 4: Crear el archivo principal

Crea un archivo llamado index.js en la raíz del proyecto.

Paso 5: Definir tipos y esquemas

Vamos a definir un esquema sencillo para manejar un recurso “Book” (libro), con propiedades básicas
como id, title y author.

Explicación:

  • Book es el tipo principal con campos.
  • Query para obtener libros, uno o muchos.
  • Mutation para crear, actualizar y eliminar librerías.

Creación de resolvers para consultas y mutaciones

Los resolvers contienen la lógica para ejecutar las operaciones declaradas en los tipos.

Paso 6: Crear resolvers básicos de ejemplo

Para empezar, vamos a probar algunos datos estáticos antes de conectar con la base de datos.

Paso 7: Inicializar Apollo Server

Agrega la inicialización y arranque del servidor en index.js:

Ahora puedes ejecutar la API con:

Y visitar la URL que aparece en consola para probar queries y mutaciones con la interfaz gráfica de Apollo Server.


Integración con MongoDB

Para manejar datos reales, conectaremos MongoDB usando Mongoose.

Paso 8: Configurar MongoDB

Puedes usar MongoDB Atlas para crear una base de datos gratuita en la nube o instalar MongoDB localmente.

Luego crea un archivo .env en la raíz para almacenar la conexión:

Paso 9: Conectar la base de datos

Modifica index.js para usar dotenv y conectar a MongoDB:

Paso 10: Crear el modelo Mongoose

Crea un modelo para Book con mongoose:

Paso 11: Actualizar resolvers para usarlos con MongoDB

Reemplaza los resolvers que usaban el arreglo books por operaciones asincrónicas con Mongoose:


Pruebas básicas de la API

Paso 12: Probar la API con Apollo Server Playground

Cuando ejecutes tu servidor (node index.js), accede a la URL mostrada (usualmente http://localhost:4000) y verás una interfaz para hacer consultas.

Aquí tienes ejemplos de operaciones:

  • Consulta para obtener todos los libros

  • Mutación para agregar un libro

  • Mutación para actualizar un libro

  • Mutación para eliminar un libro

Nota: Reemplaza ID_DEL_LIBRO con el id real que obtengas en la consulta.

Paso 13: Herramientas adicionales

  • Puedes usar extensiones de navegador como Altair GraphQL Client o Insomnia para probar tu API.

  • También es buena práctica implementar pruebas automatizadas usando frameworks como Jest o Mocha, pero esto queda para otro tutorial.


Conclusión y buenas prácticas

¡Felicidades! Has construido una API GraphQL utilizando Apollo Server y Node.js, integrando una base de datos MongoDB. Este ejemplo básico es una excelente base para proyectos más complejos.

Buenas prácticas recomendadas:

  • Organiza tu código: divide typedefs, resolvers y modelos en archivos independientes.
  • Usa variables de entorno para credenciales (no las subas a repositorios).
  • Implementa validaciones y manejo de errores en resolvers.
  • Seguridad: añade autenticación y autorización en resolvers cuando sea necesario.
  • Documenta tu API con descripciones en el esquema para aprovechar herramientas de introspección.
  • Versiona tu API si piensas evolucionarla.

Qué seguir aprendiendo

  • React y Apollo Client para el frontend.
  • Testing unitario y de integración.
  • DataLoader para optimizar resolvers.
  • Subscriptions en GraphQL para actualizaciones en tiempo real.

Si encontraste útil este tutorial, te invito a compartirlo y seguir explorando el poder de GraphQL en tus proyectos backend.