image

Bootcamps ilimitados e +650 cursos pra sempre

60
%OFF

DJ

Diogo Júnior23/10/2025 14:33
Compartilhe

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() e UseSwagger() 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:

    1. Instale o pacote:
    
    dotnet add package Swashbuckle.AspNetCore
    
    1. 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
    

    Abraço a todos e todas e bons estudos!!!

    Compartilhe
    Recomendados para você
    Cognizant - Mobile Developer
    Luizalabs - Back-end com Python
    PcD Tech Bradesco - Java & QA Developer
    Comentários (2)

    DJ

    Diogo Júnior - 23/10/2025 16:31

    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.

    DIO Community
    DIO Community - 23/10/2025 15:31

    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?