C# — Rest Api com paginação de resultado

Fulvio Cezar Canducci Dias
2 min readAug 20, 2020

Nesse tutorial é demonstrado com o auxilio de um pacote, fazer paginação de resultados de uma Rest Api desenvolvida em .NET. O pacote responsável em fazer a paginação chama-se Canducci.Pagination que além de paginar aplicações MVC Web e Razor Pages agora também faz página de resultado em um Rest Api de uma forma muito simples e eficaz.

Como é muito simples fazer esse trecho de código siga o passo a passo:

using Canducci.Pagination;[HttpGet("page/{page?}")]
public async Task<IActionResult> GetSourcePaginated(int? page)
{
page ??= 1;
if (page <= 0) page = 1;

var result = await _context
.Source
.AsNoTracking()
.OrderBy(c => c.Id)
.ToPaginatedRestAsync(page.Value, 10);
return Ok(result);
}

nesse código o método ToPaginatedRestAsync que tem dois parâmetros o primeiro é a pagina a ser apresentada e o segundo a quantidade de itens por página, e ao executar traz o resultado com diversas informações pertinentes, exemplo:

*-----------------*-----------------------------------------------*
| pageCount | Quantidade de páginas. |
*-----------------*-----------------------------------------------*
| totalItemCount | Quantidade total de itens. |
*-----------------*-----------------------------------------------*
| pageNumber | Página atual. |
*-----------------*-----------------------------------------------*
| pageSize | Quantidade de itens por página. |
*-----------------*-----------------------------------------------*
| hasPreviousPage | Significa se dá para voltar a página. |
*-----------------*-----------------------------------------------*
| hasNextPage | Significa se dá para ir para a próxima página.|
*-----------------*-----------------------------------------------*
| isFirstPage | Significa se está na primeira página. |
*-----------------*-----------------------------------------------*
| isLastPage | Significa se está na última página. |
*-----------------*-----------------------------------------------*
| firstItemOnPage | Primeiro item da página. |
*-----------------*-----------------------------------------------*
| lastItemOnPage | Último item da página. |
*-----------------*-----------------------------------------------*
| items | Os itens, ou seja, o resultado. |
*-----------------*-----------------------------------------------*

Um exemplo do resultado é basicamente assim:

{
"pageCount": 500,
"totalItemCount": 5000,
"pageNumber": 2,
"pageSize": 10,
"hasPreviousPage": true,
"hasNextPage": true,
"isFirstPage": false,
"isLastPage": false,
"firstItemOnPage": 11,
"lastItemOnPage": 20,
"items": [{
"id": 11,
"description": "Nathaniel Toy"
},
{
"id": 12,
"description": "Jaquan Grimes"
},
{
"id": 13,
"description": "Ms. Liana Kub"
},
{
"id": 14,
"description": "Guy Nikolaus"
},
{
"id": 15,
"description": "Skyla Renner IV"
},
{
"id": 16,
"description": "Cleve Boyer"
},
{
"id": 17,
"description": "Kyle Ferry"
},
{
"id": 18,
"description": "Mrs. Julian Durgan"
},
{
"id": 19,
"description": "Caroline Wolff"
},
{
"id": 20,
"description": "Crawford Hoppe"
}]
}

e com essas informações da paginação pode-se tomar decisões do que deseja mostrar e uma nova pagina de resultado.

--

--

Fulvio Cezar Canducci Dias

Bacharel em Sistemas de Informação, MTAC (Multi-Plataform Technical Audience Contributor-Microsoft), BackEnd C# e PHP e Developer Web