Rest Api com paginação de resultado
- #C#
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:
- Baixe o pacote Canducci.Pagination do site Nuget.org
- Crie em seu
ApiController
um método com a seguinte nomenclatura:
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.
Artigo criado por:https://fulviocanducci.medium.com/c-rest-api-com-pagina%C3%A7%C3%A3o-de-resultado-6be88e45417