Cliente HTTP para TypeScript: mejores bibliotecas para trabajar con la red
En el desarrollo web moderno con TypeScript, elegir el cliente HTTP correcto es crítico para el rendimiento, la seguridad de tipos y la facilidad de mantenimiento del código. Revisemos las mejores bibliotecas para realizar solicitudes HTTP, sus características y ejemplos de uso.
1. Axios — el estándar universal
Axios sigue siendo el cliente HTTP más popular gracias a su rica API y soporte integrado para TypeScript. La biblioteca proporciona métodos convenientes para solicitudes GET, POST, PUT, DELETE, transformación automática de JSON y cancelación de solicitudes.
import axios from 'axios';
interface User { id: number; name: string; email: string;}
async function getUser(id: number): Promise<User> { const response = await axios.get<User>(`/api/users/${id}`); return response.data;}
// Ejemplo con envío de datosconst newUser: Partial<User> = { name: 'Iván', email: 'ivan@example.com' };axios.post('/api/users', newUser).then(({ data }) => console.log(data));Ventajas:
- Integración profunda con TypeScript (genéricos para respuestas)
- Interceptores para registro y manejo de errores
- Protección integrada contra XSS y serialización automática
- Soporte para progreso de carga de archivos
2. Ky — ligero y moderno
Ky es una biblioteca minimalista (solo ~5KB), construida sobre Fetch API. Ideal para proyectos donde la velocidad de carga y la simplicidad son importantes. Completamente tipada en TypeScript.
import ky from 'ky';
interface Post { userId: number; id: number; title: string;}
const posts = await ky.get('https://jsonplaceholder.typicode.com/posts').json<Post[]>();
// Envío con encabezados personalizadosconst response = await ky.post('https://api.example.com/data', { json: { key: 'value' }, headers: { 'X-API-Key': 'secret' },});Características clave:
- Manejo automático de errores HTTP (estados 4xx/5xx)
- Soporte integrado para reintentos (retry en caso de fallos)
- Personalización sencilla mediante extensión de clase
- Funciona en navegador y Node.js (a través de adaptadores)
3. Got — herramienta potente para Node.js
Got es un cliente HTTP completo para el lado del servidor en TypeScript. Soporta streams, caché, proxies y escenarios complejos de autenticación.
import got from 'got';
interface ApiResponse { success: boolean; data: Record<string, unknown>;}
const result = await got.get('https://api.example.com/resource', { responseType: 'json', headers: { authorization: `Bearer ${process.env.TOKEN}` }}).json<ApiResponse>();
// Descarga de archivo con progresogot.stream('https://example.com/file.zip') .on('downloadProgress', ({ percent }) => { console.log(`Descargado ${(percent * 100).toFixed(0)}%`); }) .pipe(fs.createWriteStream('./file.zip'));Cuándo elegir Got:
- Para aplicaciones de servidor con alta carga
- Cuando se necesita trabajar con flujos de datos
- Para escenarios complejos de caché y reintentos
- Integración con TypeScript mediante decoradores
4. Fetch API — la opción nativa
El Fetch API moderno está integrado en navegadores y Node.js (desde la versión 18). TypeScript añade tipificación mediante genéricos, convirtiéndolo en una herramienta completa.
interface Config { baseURL: string; token?: string;}
async function fetchData<T>(endpoint: string, config: Config): Promise<T> { const response = await fetch(`${config.baseURL}${endpoint}`, { headers: { 'Content-Type': 'application/json', ...(config.token && { Authorization: `Bearer ${config.token}` }) También en la biblioteca
Aprendizaje automático en C# (.NET): revisión de las bibliotecas ML.NET, Accord.NET, TensorFlow.NET
Generación Swagger/OpenAPI para Rust: Utoipa y Aide
Cliente Redis para Node.js: ioredis — guía completa