Introdução
Neste tutorial, vamos explorar passo a passo como criar uma API RESTful robusta utilizando C# e o framework ASP.NET Core, aplicando o Entity Framework para a interação com o banco de dados. Focaremos nas melhores práticas de segurança e na implementação de testes automatizados, garantindo que sua aplicação esteja não apenas funcional, mas também segura e testável. Este guia é ideal para desenvolvedores que desejam profundidade nos conhecimentos sobre C# e ASP.NET Core, com um enfoque em princípios de desenvolvimento de software limpo e eficaz.
Etapas
Configuração do Ambiente de Desenvolvimento
Certifique-se de ter o SDK do .NET instalado em sua máquina. Você pode baixar a versão mais recente do SDK no site oficial da Microsoft. Para verificar se está instalado corretamente, use os comandos `dotnet –version` no console.
commands# Verificar versão instalada
dotnet --versionCriação do Projeto ASP.NET Core
Utilize o comando CLI do .NET para criar um novo projeto ASP.NET Core Web API. Insira o nome do seu projeto ao executar o comando. Esse comando cria a estrutura básica para uma nova aplicação Web API.
commandsdotnet new webapi -n MeuProjetoAPI
Instalação do Entity Framework Core
Navegue até o diretório do projeto e instale o Entity Framework Core usando o comando do NuGet. Isso permitirá que você acesse e manipule dados em um banco de dados relacional através de código C#.
commandscd MeuProjetoAPI
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.ToolsConfiguração do Banco de Dados
Crie uma nova classe chamada `AppDbContext` que herda de `DbContext`. Neste contexto, defina um `DbSet` para cada entidade que você deseja armazenar no banco de dados.
AppDbContext.csusing Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Produto> Produtos { get; set; } }
Criação da Entidade `Produto`
Implemente a classe modelo `Produto` para representar os dados que serão armazenados no banco de dados. Adicione propriedades como `Id`, `Nome`, e `Preco` e decore com atributos para configuração do Entity Framework.
Produto.csusing System.ComponentModel.DataAnnotations; public class Produto { [Key] public int Id { get; set; } [Required] public string Nome { get; set; } [Required] public decimal Preco { get; set; } }
Configuração do Startup.cs
No arquivo `Startup.cs`, configure o serviço do Entity Framework e conecte-se ao banco de dados. Utilize a conexão com SQL Server no método `ConfigureServices`.
Startup.cspublic void ConfigureServices(IServiceCollection services) { services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddControllers(); }
Implementação do Controlador `ProdutoController`
Crie um novo controlador chamado `ProdutoController`. Esse controlador deve expor endpoints para as operações CRUD. Injetar o contexto do banco de dados e criar métodos para GET, POST, PUT e DELETE.
ProdutoController.csusing Microsoft.AspNetCore.Mvc; using System.Collections.Generic; [Route("api/[controller]")] [ApiController] public class ProdutoController : ControllerBase { private readonly AppDbContext _context; public ProdutoController(AppDbContext context) { _context = context; } [HttpGet] public ActionResult<List<Produto>> GetAll() { return _context.Produtos.ToList(); } [HttpPost] public IActionResult Create([FromBody] Produto produto) { _context.Produtos.Add(produto); _context.SaveChanges(); return CreatedAtAction(nameof(GetAll), new { id = produto.Id }, produto); } }
Implementação de Testes Unitários
Adicione um novo projeto de testes ao seu solução usando a CLI do .NET. Escreva testes unitários para o `ProdutoService` usando xUnit e Moq, validando o funcionamento dos métodos CRUD.
commandsdotnet new xunit -n MeuProjetoAPI.Tests
dotnet add MeuProjetoAPI.Tests reference MeuProjetoAPI
dotnet add MeuProjetoAPI.Tests package MoqExecutando a Aplicação e Testes
Utilize o CLI do .NET para executar a aplicação e os testes unitários. Para testar os endpoints, pode-se usar ferramentas como Postman ou cURL.
commands# Compilar e executar a aplicação
dotnet run
# Executar os testes unitários
dotnet testcurl_examples# Listar todos os produtos
curl -X GET http://localhost:5000/api/produtos
# Criar um novo produto
curl -X POST -H 'Content-Type: application/json' -d '{"nome":"Produto Teste", "preco":9.99}' http://localhost:5000/api/produtos
Conclusão
Neste tutorial, você aprendeu a desenvolver uma API RESTful utilizando C# com ASP.NET Core e Entity Framework. Abordamos desde a configuração do ambiente até a implementação de testes automatizados, sempre com uma atenção especial à segurança. Agora, você está preparado para criar aplicações mais complexas e robustas, aplicando as melhores práticas aprendidas ao longo deste guia.