Bootcamp Avanade
Bom dia, boa tarde ou boa noite a todos e todas que estão participando do Bootcamp .NET C# da Avanade!
Quero compartilhar uma pequena contribuição sobre a criação de APIs e o uso do Swagger nas novas versões do .NET.
Ao iniciar o módulo de criação de APIs, o professor Buta utiliza o comando:
dotnet new webapi
para acessar a interface via:
http://localhost:5000/swagger/index.html
Porém, com as atualizações do .NET, algumas coisas mudaram. Vamos detalhar.
1️⃣ Minimal APIs
.NET 6
- Introduziu as Minimal APIs, permitindo criar endpoints sem Controllers.
- Todo o código podia estar no
Program.cs:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/weatherforecast", () => "Hello World");
app.Run();
- Swagger precisava ser configurado manualmente via
AddSwaggerGen()eUseSwagger()usando o pacote Swashbuckle. - Não havia suporte OpenAPI integrado por padrão.
.NET 7 e .NET 8
- Aperfeiçoamento incremental das Minimal APIs:
- Melhor suporte a Swagger e endpoints.
- MapGroup: permite agrupar endpoints com middlewares comuns.
- Mais flexibilidade em tipos de retorno usando
Results.*.
.NET 9
- Mantém todas as melhorias das versões 7 e 8.
- Introduz AddOpenApi() e MapOpenApi() no template minimal:
- Gera automaticamente o JSON OpenAPI.
- Não gera a interface Swagger UI.
- Ideal para documentação programática ou consumo via clientes, mas não substitui a interface visual do Swagger.
Impacto no seu projeto:
Antes do .NET 9, sempre era necessário instalar Swashbuckle para ter o Swagger UI.
No .NET 9, AddOpenApi() já vem no template, mas ainda precisamos do Swashbuckle para a interface interativa.
2️⃣ Configurando Swagger no .NET 9
Para conseguir acessar o Swagger UI, siga os passos:
- Instale o pacote:
dotnet add package Swashbuckle.AspNetCore
- Substitua a configuração padrão
AddOpenApi()
builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
por:
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
Agora você consegue acessar:
http://localhost:5000/swagger/index.html




DJ
Obrigado pelo feedback! 🙌
Na minha opinião, o maior desafio ao trabalhar com o padrão MVC é manter a separação real de responsabilidades à medida que o projeto cresce. Muitos programadores acabam por misturar regras de negócio nos Controllers, lógica de persistência nas Views ou tratamento de dados diretamente no Model, o que gera acoplamento e torna o código difícil de testar, manter ou evoluir. O ponto-chave é perceber que o MVC não é apenas uma estrutura de pastas, é um padrão de arquitetura que exige disciplina.
Excelente, Diogo! Que artigo cirúrgico e essencial para quem está estudando o .NET C# moderno! Você abordou um dos bloqueios mais comuns que os alunos enfrentam ao seguir tutoriais de versões antigas do ASP.NET Core: a evolução do Swagger na Minimal API.
É fascinante ver como você transformou um erro de setup em uma lição valiosa sobre a evolução do framework da Microsoft.
Qual você diria que é o maior desafio para um desenvolvedor ao trabalhar com um projeto que usa o padrão MVC, em termos de manter a separação de responsabilidades e de evitar o acoplamento entre as três camadas, em vez de apenas focar em fazer a aplicação funcionar?