Trabalhando com Filtro, Ordenação e Paginação em APIs ASP.NET Core
7/3/2024, às 8:34:20

Por que Implementar Filtragem, Ordenação e Paginação?

Implementar filtragem, ordenação e paginação em suas APIs melhora a eficiência e a experiência do usuário, permitindo que eles obtenham exatamente os dados que precisam de maneira eficiente e escalável.


Passo 1: Configurar o Projeto

1.1 Criar um Novo Projeto ASP.NET Core

Caso ainda não tenha um projeto, crie um novo projeto ASP.NET Core.

dotnet new webapi -o FilteringDemo
cd FilteringDemo


Passo 2: Criar os Modelos e Contexto de Dados

2.1 Criar o Modelo de Dados

Crie uma classe de modelo chamada Product.

public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}


2.2 Configurar o DbContext

Configure o DbContext para interagir com o banco de dados.

using Microsoft.EntityFrameworkCore;

public class FilteringDemoContext : DbContext
{
public FilteringDemoContext(DbContextOptions<FilteringDemoContext> options)
: base(options)
{
}

public DbSet<Product> Products { get; set; }
}


Passo 3: Configurar a Conexão com o Banco de Dados

No arquivo appsettings.json, configure a string de conexão com o banco de dados.

"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\\\\\\\mssqllocaldb;Database=FilteringDemoDb;Trusted_Connection=True;"
}


No arquivo Startup.cs, registre o DbContext no método ConfigureServices.

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<FilteringDemoContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

services.AddControllers();
}


Passo 4: Implementar Filtragem, Ordenação e Paginação

4.1 Criar o Controlador

Crie um controlador para expor os endpoints da API. Vamos criar um controlador ProductsController.

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
private readonly FilteringDemoContext _context;

public ProductsController(FilteringDemoContext context)
{
_context = context;
}

// GET: api/Products
[HttpGet]
public async Task<ActionResult<IEnumerable<Product>>> GetProducts(
string category, string sort, int? pageNumber, int? pageSize)
{
var products = _context.Products.AsQueryable();

// Filtragem
if (!string.IsNullOrEmpty(category))
{
products = products.Where(p => p.Category == category);
}

// Ordenação
if (!string.IsNullOrEmpty(sort))
{
products = sort switch
{
"name" => products.OrderBy(p => p.Name),
"price" => products.OrderBy(p => p.Price),
"name_desc" => products.OrderByDescending(p => p.Name),
"price_desc" => products.OrderByDescending(p => p.Price),
_ => products
};
}

// Paginação
int currentPage = pageNumber ?? 1;
int currentPageSize = pageSize ?? 10;
products = products.Skip((currentPage - 1) * currentPageSize).Take(currentPageSize);

return await products.ToListAsync();
}
}


Passo 5: Testar a API

Utilize ferramentas como Postman ou Swagger para testar os endpoints da API com diferentes parâmetros de filtragem, ordenação e paginação.

Exemplo de Requisição:

GET /api/products?category=Electronics&sort=price_desc&pageNumber=2&pageSize=5


Conclusão

Implementar filtragem, ordenação e paginação em suas APIs ASP.NET Core pode melhorar significativamente a eficiência da sua aplicação e a experiência do usuário. Com essas funcionalidades, você permite que os clientes da sua API obtenham dados de forma mais precisa e eficiente, o que é essencial para aplicações que lidam com grandes conjuntos de dados.


VOCÊ PODE GOSTAR

^

voltar para o top