Apollo Server para JavaScript (Node.js): guía completa con ejemplos
Apollo Server es una biblioteca potente y flexible para crear servidores GraphQL en Node.js. Forma parte del ecosistema Apollo GraphQL y ofrece a los desarrolladores un conjunto de herramientas cómodas para construir APIs productivas, escalables y fáciles de mantener. Si conoces REST, GraphQL se puede ver como una alternativa donde el cliente decide qué datos necesita y el servidor devuelve exactamente lo solicitado. Apollo Server se encarga de todo el trabajo pesado: análisis de consultas, validación del esquema, ejecución de resolvers y formateo de la respuesta.
¿Para qué sirve Apollo Server? Primero, simplifica enormemente el desarrollo de servidores GraphQL. No necesitas escribir analizadores, validadores ni preocuparte por la seguridad (protección contra inyecciones SQL, limitación de profundidad de consultas, etc.) — todo esto ya está integrado. Segundo, Apollo Server admite múltiples integraciones: con Express, Fastify, Koa, AWS Lambda, Azure Functions y otras plataformas. Esto significa que puedes desplegar el servidor en cualquier lugar, desde una aplicación local simple hasta una función serverless. Tercero, la biblioteca se desarrolla activamente, tiene una gran comunidad y una documentación excelente, lo que la convierte en el estándar de facto para GraphQL en Node.js.
En este artículo, analizaremos en detalle la instalación, los métodos principales, escribiremos varios ejemplos prácticos y daremos consejos de rendimiento. El material será útil tanto para principiantes que recién comienzan con GraphQL como para desarrolladores experimentados que desean profundizar sus conocimientos sobre Apollo Server.
1. Instalación
Para trabajar con Apollo Server necesitas Node.js versión 14 o superior. La instalación se realiza a través de npm (o yarn). El paquete principal es @apollo/server. También necesitarás graphql, el núcleo del lenguaje GraphQL, sin el cual Apollo Server no puede funcionar.
npm install @apollo/server graphql
Si planeas usar Apollo Server con Express (la opción más popular), instala adicionalmente:
npm install express cors body-parser
npm install @as-integrations/express
Para trabajar con TypeScript (recomendado), instala los tipos:
npm install --save-dev typescript @types/node @types/express
2. Inicio rápido — ejemplo mínimo funcional
Vamos a crear un servidor GraphQL muy simple que salude al usuario. Crea un archivo index.js y agrega el siguiente código:
import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';
// 1. Definimos el esquema (typeDefs)
const typeDefs = `#graphql
type Query {
hello: String
}
`;
// 2. Definimos los resolvers
const resolvers = {
Query: {
hello: () => '¡Hola, mundo! Este es Apollo Server.',
},
};
// 3. Creamos la instancia del servidor
const server = new ApolloServer({
typeDefs,
resolvers,
});
// 4. Iniciamos el servidor
const { url } = await startStandaloneServer(server, {
listen: { port: 4000 },
});
console.log(`🚀 Servidor iniciado en: ${url}`);
Ejecuta el servidor con el comando node index.js (si usas módulos ES, agrega "type": "module" en package.json). Abre el navegador y ve a http://localhost:4000. Verás la interfaz de Apollo Sandbox, donde puedes ejecutar la consulta:
query {
hello
}
La respuesta debería ser: { "data": { "hello": "¡Hola, mundo! Este es Apollo Server." } }. ¡Felicidades, tu primer servidor GraphQL está funcionando!
3. Métodos/funciones/clases principales
Veamos los elementos clave de Apollo Server. Para cada uno, mostraremos su firma, una breve descripción y un ejemplo.
3.1. new ApolloServer(config)
Firma:
También en la biblioteca
Trabajo con XML en C++: bibliotecas pugixml, TinyXML-2 y RapidXML
gRPC para Go (Golang): bibliotecas, ejemplos y guía
Event Bus y el patrón Observer en Java: guía con ejemplos
JsonWebToken en JavaScript (Node.js): guía completa con ejemplos
Trabajo con fechas en TypeScript: revisión de las bibliotecas date-fns, Luxon y Day.js
Recommendations