Cliente HTTP para JavaScript (Node.js): mejores bibliotecas para trabajar con la red
El desarrollo moderno con Node.js rara vez prescinde de la interacción con servicios externos. Ya sea una API REST, endpoints de GraphQL o transmisión de datos, necesitarás un cliente HTTP confiable. En este artículo analizaremos las mejores bibliotecas para realizar solicitudes HTTP en el entorno Node.js, sus características y ejemplos de uso.
1. Axios — la opción universal
Axios es el cliente HTTP más popular para Node.js y navegadores. Está basado en promesas, soporta interceptores (interceptors), transformación automática de JSON y cancelación de solicitudes.
Instalación
npm install axiosEjemplo de solicitud GET
const axios = require('axios');
async function getUsers() { try { const response = await axios.get('https://jsonplaceholder.typicode.com/users'); console.log(response.data); } catch (error) { console.error('Error:', error.message); }}
getUsers();Características:
- Soporte de
CancelTokenpara cancelar solicitudes - Manejo automático de errores HTTP (códigos de estado 4xx y 5xx)
- Funciona tanto en el servidor como en el navegador
- Soporte de progreso de carga/descarga
2. Got — rendimiento y flexibilidad
Got es una biblioteca ligera y rápida, creada específicamente para Node.js. Ofrece una API rica y un excelente rendimiento gracias al uso directo de los módulos http y https.
Instalación
npm install gotEjemplo de solicitud POST
const got = require('got');
async function createPost() { try { const response = await got.post('https://jsonplaceholder.typicode.com/posts', { json: { title: 'Nuevo post', body: 'Contenido del post', userId: 1 }, responseType: 'json' }); console.log(response.body); } catch (error) { console.error('Error:', error.message); }}
createPost();Características:
- Soporte de streams y paginación
- Soporte integrado de reintentos (retry)
- Trabajo con cookies y almacenamiento en caché
- Soporte de HTTP/2 (a través de
http2-wrapper)
3. Node.js Fetch API — estándar nativo
A partir de Node.js 18, la Fetch API se convirtió en un módulo integrado (disponible globalmente). Es una implementación de la misma API que en los navegadores, lo que simplifica el código universal.
Ejemplo de uso
async function fetchData() { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts/1'); if (!response.ok) throw new Error('Error HTTP: ' + response.status); const data = await response.json(); console.log(data); } catch (error) { console.error('Error:', error.message); }}
fetchData();Características:
- No requiere instalación — integrado en Node.js 18+
- API estándar, familiar para desarrolladores frontend
- Soporte de
AbortControllerpara cancelar solicitudes - Capacidades limitadas en comparación con Axios/Got (por ejemplo, sin interceptores)
4. undici — cliente HTTP/1.1 de alto rendimiento
undici es un cliente HTTP moderno y rápido que está en la base del Fetch integrado en Node.js. Está optimizado para el máximo rendimiento.
Instalación
npm install undiciEjemplo de solicitud
const { request } = require('undici');
async function fetchWithUndici() { try { const { statusCode, body } = await request('https://jsonplaceholder.typicode.com/users'); const data = await body.json(); console.log('Estado:', statusCode); console.log('D También en la biblioteca
Mockery para PHP: guía completa con ejemplos prácticos
Chronicle Map Java: guía completa con ejemplos prácticos
Limitación de Tasa en TypeScript: bibliotecas, herramientas y ejemplos de implementación
Generación de PDF en JavaScript (Node.js): bibliotecas y herramientas