GraphQL en Node.js: Guía completa sobre la biblioteca graphql-http

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca GraphQL JavaScript (Node.js): graphql-http



GraphQL es un lenguaje de consulta para API, desarrollado por Facebook, que permite a los clientes solicitar solo los datos que necesitan. En el ecosistema de Node.js, una de las bibliotecas clave para implementar servidores GraphQL es graphql-http. Es una herramienta ligera pero potente que permite crear API de alto rendimiento con una sobrecarga mínima. A diferencia de soluciones más pesadas como Apollo Server, graphql-http ofrece flexibilidad y control total sobre los manejadores HTTP.



¿Qué es graphql-http?



graphql-http es una biblioteca oficial de la comunidad GraphQL que proporciona una forma sencilla de conectar GraphQL a cualquier servidor HTTP de Node.js. No depende de un framework específico (Express, Koa, Fastify, etc.), lo que la convierte en una opción universal. La tarea principal de la biblioteca es tomar una solicitud HTTP entrante, analizarla, ejecutar la consulta GraphQL y devolver una respuesta estructurada.



Instalación y configuración



Para comenzar, instale la biblioteca a través de npm:



npm install graphql-http graphql


Ejemplo mínimo de servidor en Node.js puro (sin Express):



const http = require('http');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');

// Definimos el esquemaconst schema = buildSchema(` type Query { hello: String user(id: Int!): User } type User { id: Int name: String email: String }`);

// Resolutoresconst rootValue = { hello: () => '¡Hola, mundo!', user: ({ id }) => ({ id, name: `Usuario ${id}`, email: `user${id}@example.com` })};

// Creamos el manejadorconst handler = createHandler({ schema, rootValue });

// Servidor HTTPconst server = http.createServer((req, res) => { if (req.url === '/graphql') { handler(req, res); } else { res.writeHead(404); res.end('Not Found'); }});

server.listen(4000, () => { console.log('Servidor iniciado en http://localhost:4000/graphql');});


Integración con Express



La mayoría de los desarrolladores usan Express. La integración de graphql-http con Express es trivial:



const express = require('express');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');

const schema = buildSchema(` type Query { books: [Book] } type Book { title: String author: String }`);

const books = [ { title: 'Guerra y paz', author: 'León Tolstói' }, { title: 'Crimen y castigo', author: 'Fiódor Dostoyevski' }];

const rootValue = { books: () => books};

const app = express();

app.all('/graphql', createHandler({ schema, rootValue }));

app.listen(3000, () => { console.log('Express + GraphQL en http://localhost:3000/graphql');});


Características y ventajas principales



  • Flexibilidad de enrutamiento: usted decide en qué endpoint estará disponible GraphQL.
  • Soporte para todos los métodos HTTP: las solicitudes GET y POST se procesan correctamente.
  • Validación incorporada: la biblioteca verifica automáticamente que las consultas cumplan con el esquema.
  • Rendimiento: consumo mínimo de memoria y alta velocidad de procesamiento.
  • Extensibilidad: se pueden agregar middleware para autenticación, registro y almacenamiento en caché.


Trabajo con mutaciones y suscripciones



Además de las consultas (Query), graphql-http admite mutaciones (Mutation) para modificar datos. Ejemplo de esquema con mutación:



const schema = buildSchema(`  type Query {    message: String  }  type Mutation {    setMessage(newMessage: String!): String  }`);

let message = 'Men

Recommendations