1.0.1 • Published 6 months ago
@gleissonneves/liz-api-client v1.0.1
📡 API Client - JavaScript Fetch Wrapper
Uma biblioteca de cliente HTTP moderna e extensível, baseada em fetch, com suporte a interceptadores, retry automático, timeout configurável e tratamento de erros avançado.
✨ Recursos
✅ baseUrl configurável ✅ Timeout nativo por requisição ✅ Retry automático em erros de rede (configurável) ✅ Interceptadores (onRequest, onResponse, onError) ✅ Tratamento de erros com classe ApiError ✅ Parsing automático de JSON e Text ✅ Controle de query params em requisições GET ✅ Totalmente extensível para middlewares e caching
🚀 Instalação
🛠️ Uso básico
- Importação e Instância
npm install @gleissonneves/liz-api-client
import { Api } from "@gleissonneves/liz-api-client";
const api = new Api({
baseUrl: 'https://api.meuservico.com',
timeout: 10000, // Opcional (default: 15 segundos)
maxRetries: 2, // Opcional (default: 2 tentativas)
});
- Métodos Disponíveis
- api.get(endpoint, queryParams = {}, config = {})
- api.post(endpoint, body = {}, config = {})
- api.put(endpoint, body = {}, config = {})
- api.delete(endpoint, config = {})
- api.setInterceptors({ request, response, error })
📚 Exemplos de uso
- Requisição GET com Query Params
const { data } = await api.get('/usuarios', { ativo: true });
console.log(data);
- Requisição POST com corpo de dados
await api.post('/login', { email: 'email@exemplo.com', senha: '123456' });
- Tratamento de Erros
try {
const { data } = await api.get('/dados');
} catch (error) {
if (error instanceof ApiError) {
console.error('Erro de API', error.status, error.data);
} else {
console.error('Erro desconhecido', error);
}
}
🔥 Interceptadores
Adicionando Interceptadores Globais
api.setInterceptors({
request: async (config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
response: async (response) => {
// Você pode manipular a resposta aqui
return response;
},
error: async (error) => {
// Centralize o tratamento de erros aqui
console.error('Interceptado erro:', error);
throw error;
}
});
⚙️ Configurações aceitas no construtor
Propriedade | Tipo | Descrição | Default |
---|---|---|---|
baseUrl | string | URL base para todas as requisições | '' |
timeout | number | Tempo limite em ms para abortar requisição | 15000 |
maxRetries | number | Número máximo de tentativas em erro de rede | 2 |
headers | object | Cabeçalhos padrão | { 'Content-Type': 'application/json' } |
🧩 Classe de Erro: ApiError
Todos os erros de API são lançados como instâncias de ApiError.
Atributos disponíveis:
- status: Código HTTP da resposta
- data: Corpo da resposta (JSON ou texto)
- response: Objeto Response original
🛡️ Roadmap Futuro
- [] Suporte a cache de respostas (Cache-First)
- [] Middlewares encadeáveis (use(middleware))
- [] Retentativas inteligentes baseadas em erro (retryIf)
- [] Upload progress (com onUploadProgress)
- [] Caching com invalidation (stale-while-revalidate)
1.0.1
6 months ago