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.
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL 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
.
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL 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.
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL 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.
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL "ConnectionStrings" : {
"DefaultConnection" : "Server=(localdb)\\\\\\\\mssqllocaldb;Database=FilteringDemoDb;Trusted_Connection=True;"
}
No arquivo Startup.cs
, registre o DbContext
no método ConfigureServices
.
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL 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
.
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL 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;
}
[HttpGet ]
public async Task<ActionResult<IEnumerable<Product>>> GetProducts(
string category, string sort, int ? pageNumber, int ? pageSize)
{
var products = _context.Products.AsQueryable();
if (!string .IsNullOrEmpty(category))
{
products = products.Where(p => p.Category == category);
}
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
};
}
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:
Plain Bash C++ C# CSS Diff HTML/XML Java JavaScript Markdown PHP Python Ruby SQL 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.