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