1
resposta

[Bug] GET All de uma API paginada mas da erro de limite requisições excedida

Estou trazendo dados de uma API paginada e fazendo um loop para percorrer todas as páginas e colocar no meu JSON e jogo os dados das requisições para para o meu banco de dados. Faço a requisição de 3 entidades dessa mesmo API, as 3 com endpoints diferentes:

Pacientes: axios.get(paciente/lista?pagina=${pagina++})

Agendamentos: axios.get( /agenda/lista?codigoPaciente=${item.id}&dataFinal=2500-12-31&dataInicial=2000-01-01 )

Consultas: axios.get( /plano-tratamento/lista?idPaciente=${item.id} );

Porém quando faço o loop e os 3 requests para pegar o dados ele me retorna erro de limite de requisição excedido. erro de limite de requisição excedido

Retorno da API que faço o GET, ela possui 1963 páginas e cada página possui 50 pacientesRetorno API

Queria saber como faço para limitar essas requisições para ser menor que 45 por minuto. O que estou fazendo de errado?

Segue meu código:Minha função

1 resposta

Olá, Matheus! Tudo Joia?

Peço desculpa pela demora em responder o seu tópico.

Uma possível solução para esse problema é implementar um mecanismo de controle de taxa, também conhecido como rate limiting. Esse mecanismo permite limitar o número de requisições feitas em um determinado intervalo de tempo.

Uma forma de implementar o rate limiting é utilizando um pacote ou biblioteca específica para isso. Por exemplo, você pode usar o pacote axios-rate-limit para limitar o número de requisições feitas por minuto. Aqui está um exemplo de como você pode utilizá-lo:

const axios = require('axios');
const rateLimit = require('axios-rate-limit');

const api = rateLimit(axios.create(), { maxRequests: 45, perMilliseconds: 60000 });

// Agora você pode utilizar a variável 'api' para fazer as suas requisições
api.get(`paciente/lista?pagina=${pagina++}`)
  .then(response => {
    // Processar os dados retornados
  })
  .catch(error => {
    // Tratar erros
  });

Nesse exemplo, o maxRequests define o número máximo de requisições permitidas dentro do intervalo de tempo especificado em perMilliseconds. No caso, estamos limitando a 45 requisições por minuto.

Lembre-se de ajustar os valores conforme as limitações da API que você está utilizando.

Espero que essa sugestão possa te ajudar a resolver o problema. Se tiver mais alguma dúvida, estarei à disposição.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.