Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Consulta em API com limite de registros

Boa noite!

No curso vimos como realizar consultas em API paginadas, quando sabemos quantas páginas a consulta possui. Mas e no caso onde eu não sei quantas vezes terei que realizar a consulta, sabendo somente que ela tem um limite de registros por consulta, por exemplo, 1000? Como podemos montar um laço de repetição que execute a consulta, verifique se a consulta está vazia e, se não, armazenar os registros e acrescentar 1000 na variável de controle, mas se sim, interromper a execução?

Obrigado!

2 respostas
solução!

Olá, André. Tudo bem?

O mais importante é você estudar a API e identificar o que é retornado quando acessamos uma página sem conteúdo.

Segue um exemplo onde gero uma lista de dados enquanto um dos atributos da API estiver vazio:

listaDados = 
        List.Generate(
            () =>
            [Consulta = try dados(Number.ToText(1)) otherwise null, pagina = 1],
            each List.IsEmpty([Consulta][Column1]) <> true ,
            each [Consulta = try dados(Number.ToText([pagina]+1)) otherwise null, pagina = [pagina]+1],
            each [Consulta]
        )

Espero ter ajudado e bons estudos.

Bom dia, Professor! Excelente resposta, era exatamente o que eu precisava. As únicas modificações que fiz foi em "pagina", que na minha API são saltos (parâmetro skip) de 1000 em 1000, e na validação List.isEmpty retirei a coluna, visto que quero verificar se a consulta está vazia, e não uma coluna específica:

listaDados = List.Generate( () => [Consulta = try dados(0) otherwise null, skip = 0], each List.IsEmpty([Consulta]) <> true , each [Consulta = try dados([skip] + 1000)) otherwise null, skip = [skip]+1000], each [Consulta] )

Deu muito certo! Muito obrigado, Professor!