Article image
Fulvio Dias
Fulvio Dias30/11/2023 21:55
Compartilhe

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:

  1. Baixe o pacote Canducci.Pagination do site Nuget.org
  2. 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

Compartilhe
Comentários (0)