En esta sección, aprenderemos cómo configurar un servidor GraphQL desde cero. Utilizaremos Node.js y Express junto con la biblioteca graphql y express-graphql para crear nuestro servidor. Al final de esta lección, tendrás un servidor GraphQL básico en funcionamiento.
Requisitos Previos
Antes de comenzar, asegúrate de tener instalado Node.js y npm en tu máquina. Puedes descargar Node.js desde aquí.
Paso 1: Crear un Proyecto Node.js
Primero, crea un nuevo directorio para tu proyecto y navega a él en tu terminal:
Inicializa un nuevo proyecto Node.js:
Esto creará un archivo package.json en tu directorio.
Paso 2: Instalar Dependencias
Instalaremos las siguientes dependencias:
express: Un framework web para Node.js.graphql: La biblioteca principal de GraphQL.express-graphql: Middleware para integrar GraphQL con Express.
Ejecuta el siguiente comando para instalar estas dependencias:
Paso 3: Configurar el Servidor Express
Crea un archivo llamado index.js en el directorio raíz de tu proyecto. Este archivo contendrá la configuración de nuestro servidor Express.
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
// Definir el esquema de GraphQL
const schema = buildSchema(`
type Query {
hello: String
}
`);
// Definir los resolvers
const root = {
hello: () => {
return 'Hello, world!';
},
};
// Crear una instancia de Express
const app = express();
// Configurar el endpoint de GraphQL
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true, // Habilitar GraphiQL para pruebas
}));
// Iniciar el servidor
app.listen(4000, () => {
console.log('Servidor GraphQL ejecutándose en http://localhost:4000/graphql');
});Explicación del Código
-
Importar Módulos:
const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const { buildSchema } = require('graphql');Importamos los módulos necesarios para configurar nuestro servidor.
-
Definir el Esquema de GraphQL:
const schema = buildSchema(` type Query { hello: String } `);Definimos un esquema simple con un tipo
Queryque tiene un campohelloque devuelve una cadena. -
Definir los Resolvers:
const root = { hello: () => { return 'Hello, world!'; }, };Definimos los resolvers que proporcionan la lógica para obtener los datos solicitados en las consultas.
-
Crear una Instancia de Express:
const app = express();Creamos una instancia de la aplicación Express.
-
Configurar el Endpoint de GraphQL:
app.use('/graphql', graphqlHTTP({ schema: schema, rootValue: root, graphiql: true, }));Configuramos el middleware
express-graphqlen la ruta/graphqly habilitamos GraphiQL, una interfaz de usuario para probar consultas GraphQL. -
Iniciar el Servidor:
app.listen(4000, () => { console.log('Servidor GraphQL ejecutándose en http://localhost:4000/graphql'); });Iniciamos el servidor en el puerto 4000 y mostramos un mensaje en la consola.
Paso 4: Probar el Servidor
Para probar tu servidor GraphQL, abre tu navegador y navega a http://localhost:4000/graphql. Deberías ver la interfaz de GraphiQL.
En la interfaz de GraphiQL, puedes ejecutar la siguiente consulta:
Deberías recibir la siguiente respuesta:
Ejercicio Práctico
Ejercicio 1: Añadir un Nuevo Campo al Esquema
Añade un nuevo campo greet al esquema que acepte un argumento name y devuelva un saludo personalizado.
Solución
-
Modifica el esquema para incluir el nuevo campo:
const schema = buildSchema(` type Query { hello: String greet(name: String!): String } `); -
Añade el resolver para el nuevo campo:
const root = { hello: () => { return 'Hello, world!'; }, greet: ({ name }) => { return `Hello, ${name}!`; }, }; -
Prueba la nueva consulta en GraphiQL:
{ greet(name: "GraphQL") }Deberías recibir la siguiente respuesta:
{ "data": { "greet": "Hello, GraphQL!" } }
Conclusión
En esta lección, hemos configurado un servidor GraphQL básico utilizando Node.js, Express, y express-graphql. Hemos aprendido a definir un esquema simple y a crear resolvers para manejar las consultas. En el próximo módulo, profundizaremos en los conceptos fundamentales de GraphQL, como consultas, mutaciones y resolvers.
Curso de GraphQL
Módulo 1: Introducción a GraphQL
- ¿Qué es GraphQL?
- GraphQL vs REST
- Configuración de un Servidor GraphQL
- Conceptos Básicos del Esquema de GraphQL
Módulo 2: Conceptos Fundamentales
Módulo 3: Diseño Avanzado de Esquemas
Módulo 4: Trabajando con Datos
Módulo 5: Rendimiento y Seguridad
Módulo 6: Herramientas y Ecosistema
Módulo 7: Pruebas y Despliegue
- Pruebas Unitarias de Resolvers
- Pruebas de Integración
- Integración Continua
- Despliegue de Servidores GraphQL
