Cliente HTTP para TypeScript: principais bibliotecas para trabalhar com rede
No desenvolvimento web moderno com TypeScript, a escolha do cliente HTTP correto é criticamente importante para desempenho, segurança de tipos e facilidade de manutenção do código. Vamos analisar as melhores bibliotecas para realizar requisições HTTP, suas características e exemplos de uso.
1. Axios — padrão universal
Axios continua sendo o cliente HTTP mais popular graças à sua API rica e suporte nativo a TypeScript. A biblioteca oferece métodos convenientes para requisições GET, POST, PUT, DELETE, transformação automática de JSON e cancelamento de requisições.
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;}
// Exemplo com envio de dadosconst newUser: Partial<User> = { name: 'João', email: 'joao@example.com' };axios.post('/api/users', newUser).then(({ data }) => console.log(data));Vantagens:
- Integração profunda com TypeScript (genéricos para respostas)
- Interceptadores para logging e tratamento de erros
- Proteção embutida contra XSS e serialização automática
- Suporte a progresso de upload de arquivos
2. Ky — leve e moderno
Ky é uma biblioteca minimalista (apenas ~5KB), construída sobre o Fetch API. Ideal para projetos onde velocidade de carregamento e simplicidade são importantes. Totalmente tipada em 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[]>();
// Envio com cabeçalhos personalizadosconst response = await ky.post('https://api.example.com/data', { json: { key: 'value' }, headers: { 'X-API-Key': 'secret' },});Características principais:
- Tratamento automático de erros HTTP (status 4xx/5xx)
- Suporte nativo a retry (tentativas repetidas em falhas)
- Personalização fácil através de extensão de classe
- Funciona no navegador e Node.js (através de adaptadores)
3. Got — ferramenta poderosa para Node.js
Got é um cliente HTTP completo para o lado servidor em TypeScript. Suporta streams, cache, proxy e cenários complexos de autenticação.
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>();
// Download de arquivo com progressogot.stream('https://example.com/file.zip') .on('downloadProgress', ({ percent }) => { console.log(`Baixado ${(percent * 100).toFixed(0)}%`); }) .pipe(fs.createWriteStream('./file.zip'));Quando escolher Got:
- Para aplicações servidoras com alta carga
- Quando necessário trabalhar com streams de dados
- Para cenários complexos de cache e tentativas repetidas
- Integração com TypeScript através de decoradores
4. Fetch API — escolha nativa
O moderno Fetch API — embutido em navegadores e Node.js (a partir da versão 18). TypeScript adiciona tipagem através de genéricos, tornando-o uma ferramenta 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}` }) Também na biblioteca
Serialização de objetos em TypeScript: bibliotecas, métodos e exemplos
gRPC C++: Guia completo com exemplos práticos para C++
Trabalhando com XML em TypeScript: bibliotecas para parsing e criação de XML
ORM para C++: comparação e exemplos de uso (ODB, SOCI, SQLiteCpp)
SwiftConfig: Gerenciamento de configuração de aplicativos em Swift