Tempo aproximado para leitura: 00:02:00 min
Dúvida
Como utilizar a paginação no desenvolvimento de uma API?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - AdvPL - Todas as versões
Solução
Para paginação em API, você pode utilizar o page e pageSize.
No seu código fonte, pode definir o page e o pageSize com conteúdo Default, por exemplo:
Default self:page := 1
Default self:pageSize := 10
Dessa forma, se não for passado nada na URL no queryparam, por padrão a página definida para listar os itens será a 1 e o número de registros nesta página, 10.
Para tratativa da definição da página e quantidade de registros, segue um exemplo que pode utilizar numa API com método GET para listagem de clientes(SA1):
BEGINSQL Alias cAliasSA1
SELECT SA1.A1_COD, SA1.A1_LOJA, SA1.A1_NOME
FROM %table:SA1% SA1
WHERE SA1.%NotDel%
%exp:cWhere%
ENDSQL
If ( cAliasSA1 )->( ! Eof() )
// Identifica a quantidade de registro no alias temporário
COUNT TO nRecord
// nStart -> primeiro registro da pagina
// nReg -> numero de registros do inicio da pagina ao fim do arquivo
If self:page > 1
nStart := ( ( self:page - 1 ) * self:pageSize ) + 1
nReg := nRecord - nStart + 1
Else
nReg := nRecord
EndIf
// Posiciona no primeiro registro.
( cAliasSA1 )->( DBGoTop() )
// Valida a exitencia de mais paginas
If nReg > self:pageSize
oJsonCli['hasNext'] := .T.
Else
oJsonCli['hasNext'] := .F.
EndIf
Else
// Nao encontrou registros
oJsonCli['hasNext'] := .F.
EndIf
No postman por exemplo, a minha URL ficaria dessa forma para definir a página e quantidade de itens por página:
Dessa forma, estaria listando a página 2 e 5 registros neste página.
Saiba mais:
Guia de implementação AdvPL
ADVPL - Em um WS REST, definir a quantidade de informação retornada em um método GET
0 Comentários