Como paginar pedidos de API?
Last updated: June 19, 2026
A API de DISPATCH do L2L limita os pedidos GET da Área de Registos a 2000 registos, salvo indicação em contrário. E se precisar de obter mais do que isso? Este artigo mostra-lhe como utilizar os argumentos de consulta de paginação integrados para obter registos além do limite imposto.
Argumentos de consulta de paginação
Existem dois argumentos de consulta que irá utilizar para a paginação: limit e offset.
O argumento limit limita o número de registos devolvidos pela API. Se não especificar um argumento limit, a API irá devolver, por predefinição, 100 registos.
O argumento offset indica à API com que registo deve começar. Esta é uma contagem baseada em zero, pelo que a primeira página teria offset=0 e a API devolveria os registos 0-99. Se estiver a limitar os resultados a 100 registos por página, o offset da segunda página seria 100.
Exemplo
Aqui está um script de exemplo para obter vários registos utilizando Python 2.7. Preste especial atenção ao ciclo while.
import requests
finished = False
machines = []
url = 'https://example.leading2lean.com/api/1.0/machines/'
apikey = 'fakeapikey'
limit = 2000
site = 1
while not finished:
resp = requests.get(url, {'auth': apikey, 'site': site, 'limit': limit, 'offset': len(machines)}, timeout=60)
if resp.ok:
resp_js = resp.json()
if not resp_js['success']:
raise Exception("api call failed with error: %s" % resp_js['error'])
machines.extend(resp_js['data'])
if len(resp_js['data']) < limit:
finished = True
else:
raise Exception("Failed request, error: %d" % resp.status_code)Método alternativo de paginação de pedidos da API
Frequentemente, poderá precisar de obter dados do L2L onde são adicionados novos dados regularmente. Por exemplo, são adicionadas Expedições muitas vezes por hora. Pode utilizar o processo seguinte para obter dados de áreas que mudam frequentemente:
Passo 1: Crie o seu URL. Este URL deve utilizar um dos parâmetros mágicos de ordenação para limitar a quantidade de dados que está a devolver. Neste exemplo, quero obter uma lista de Expedições que foram criadas na última semana:
https://[customer].leading2lean.com/api/1.0/dispatches?auth=[auth]&site=1&created__gt=[one week ago]&order_by=-idComo pode ver, os resultados estão ordenados pelo id, por ordem decrescente.
Passo 2: Adicione um novo parâmetro mágico de ordenação. Como estava a ordenar pelo id, vou obter o id do último resultado e adicioná-lo ao URL, desta forma:
https://[customer].leading2lean.com/api/1.0/dispatches?auth=[auth]&site=1&created__gt=[one week ago]&order_by=-id&id__gt=[last id]Passo 3: Continue até ter 0 resultados. Quando o resultado de L2L estiver vazio, terá recuperado todos os registos, sem lacunas.
Sugestões
- Recomendamos que escreva o seu código para recuperar apenas os registos da API de que necessita. Isto pode ser feito utilizando filtros adicionais nos pedidos à API e limitando o número total de registos a uma quantidade razoável. Se não filtrar e limitar as suas consultas à API, os seus servidores Web poderão ficar mais lentos durante a execução da sua aplicação. Tenha cuidado.
- Quando chegar ao fim de um conjunto de dados, receberá uma resposta com um objeto
datavazio, como este:
Quando obtiver um objeto de dados vazio, deverá terminar o ciclo.{ limit: 100, data: [], success: true, offset: 1000 }