Guia de Boas Práticas no Consumo de API

Aplicando as boas práticas você evita erros ao utilizar nossas APIs e consegue obter melhor desempenho e performance em suas integrações.

Monitoramento e alertas:

  • Monitoramento Contínuo: Incentive o monitoramento regular do desempenho da API, utilizando ferramentas para rastrear métricas críticas como tempo de resposta, taxa de erro e throughput. Utilize ferramentas como DataDog, New Relic, Grafana, etc.
  • Sistema de Alertas: Configure alertas para notificar as equipes de desenvolvimento sobre comportamentos anormais ou degradação da performance da API.

Retentativas com Backoff Exponencial:

O backoff exponencial é uma estratégia de espera usada em sistemas distribuídos para lidar com falhas temporárias. Ele faz com que um cliente espere por um período de tempo crescente antes de tentar novamente após uma falha, ajudando a evitar congestionamentos nos servidores e permitindo que o sistema se recupere de maneira mais eficaz.

  • Implementação de Backoff Exponencial: Implemente backoff exponencial nas suas tentativas de reconexão em caso de falhas temporárias ou sobrecarga dos servidores. Isso ajuda a evitar congestionamentos adicionais e permite que a infraestrutura se recupere, mantendo a estabilidade do serviço.
  • Variabilidade Aleatória: Adicione um fator aleatório ao backoff exponencial para evitar que muitos clientes tentem reconectar simultaneamente após uma falha.

Exemplo:

// Exemplo de backoff exponencial com variabilidade aleatória  
function backoffExponencial(tentativa: number) {  
   const baseDelay = Math.pow(2, tentativa) _ 1000; // 1000 milissegundos = 1 segundo  
    const randomFactor = Math.random() _ 0.5 + 0.5; // Fator aleatório entre 0.5 e 1.0  
    return baseDelay \* randomFactor;  
}  
let tentativa = 0;  
function realizarRequisicao() {  
    fetch('<https://api.exemplo.com/dados'>)  
        .then(response => {  
            // Processar resposta  
        })  
        .catch(error => {  
            if (tentativa \< 5) {  
                setTimeout(() => {  
                    realizarRequisicao();  
                    tentativa++;  
                }, backoffExponencial(tentativa));  
            } else {  
                console.error('Número máximo de tentativas excedido');  
            }  
        });  
}  
realizarRequisicao();

Respeitar os Limites de Uso:

  • Adesão aos Rate Limits: Respeite os limites de taxa estabelecidos para evitar sobrecarga nos servidores e garantir a disponibilidade do serviço para todos.
  • Planejamento de Carga: Planeje as requisições para distribuir a carga ao longo do tempo, evitando picos desnecessários.

Uso Eficiente de Dados:

  • Minimização de Dados Solicitados: Use parâmetros que limitem a quantidade de dados retornados (como filtros e campos específicos) para reduzir a carga na rede e nos servidores.
  • Cache de Dados: Use o cache para informações que não mudam frequentemente, reduzindo o número de chamadas repetidas à API.

Exemplo:

// Exemplo de consulta com parâmetros de filtro  
fetch('<http://api.gupy.io/api/v2/candidates?updatedAfter=2023-01-01&updatedBefore=2023-02-01>  
')  
    .then(response => {  
        // Processar resposta  
    });

Atualização e Manutenção:

  • Acompanhamento de Versões: Mantenha as integrações atualizadas com as últimas versões da API para aproveitar melhorias e correções de segurança. Aqui na Gupy, por exemplo, já temos alguns endpoints que estão na versão 2
  • Depreciação Responsável: Lide com APIs depreciadas de forma planejada, incluindo a migração para novas versões para evitar interrupções.

Legalidade e Ética:

  • Conformidade Legal: Assegure-se de estar em conformidade com regulamentações de dados e privacidade, como GDPR ou LGPD, dependendo da localização.
  • Uso Ético: Respeite os termos de serviço e utilize os dados de maneira responsável e segura.