SDK modular
Ao integrar APIs em aplicações reais, você raramente fará chamadas soltas: precisa de autenticação consistente, tratamento de erros padronizado e lógica de retry para falhas de rede. Organizar tudo em um SDK modular com módulos separados (usuários, produtos) e erros customizados permite reutilizar essa infraestrutura sem duplicar código. É o padrão usado por bibliotecas como axios e SDKs oficiais de serviços cloud.
O PROBLEMA
SDK para API fictícia com autenticação, usuários, produtos. Erros customizados e retry.
EXEMPLO
const api = criarSDK({baseUrl:"https://api.exemplo.com", token:"xxx"});
const usuario = await api.usuarios.buscar(1);SOBRE O CONCEITO
A arquitetura modular usa export e import para dividir responsabilidades: cada módulo (ex.: usuarios.js) exporta funções que acessam endpoints específicos, enquanto um módulo central (sdk.js) gerencia autenticação e lógica de retry. Erros customizados com class extends Error permitem capturar falhas de forma específica (ex.: AutenticacaoError), diferenciando de erros genéricos. O erro comum de não reutilizar lógica de retry ocorre quando cada módulo implementa seu próprio loop de tentativas, gerando duplicação e inconsistência — por exemplo, um módulo pode tentar 3 vezes e outro 5, com intervalos diferentes. A solução é centralizar o retry em uma função requisicaoComRetry que recebe a chamada original e aplica tentativas uniformes, usando async/await e try/catch com Promise para controlar atrasos.
RESOLUÇÃO