Cliente HTTP para JavaScript (Node.js): top bibliotecas para trabajar con API

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

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 axios


Ejemplo 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 CancelToken para 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 got


Ejemplo 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 AbortController para 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 undici


Ejemplo 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

Recommendations