Novidades do .NET 6: Minimal APIs em ASP.NET Core

Renato Groffe
4 min readMay 30, 2021

--

Na semana passada (dias 25 a 27/Maio, terça a quinta) aconteceu a edição 2021 do Microsoft Build, a conferência anual da Microsoft para Desenvolvedores. Como de praxe, foram diversos os anúncios envolvendo a plataforma .NET. Os posts a seguir nos blogs oficiais do .NET e do ASP.NET destacam algumas dessas novidades:

Já publiquei inclusive neste blog 2 artigos cobrindo novidades que vieram com esta edição do Build, na qual foi disponibilizado o Preview 4 do .NET 6:

Novidades do .NET 6: HTTP Logging no ASP.NET Core

Novidades do .NET 6: melhorias em LINQ - MaxBy e MinBy

E produzi ainda outros posts baseados em recursos liberados em Previews anteriores:

Novidades do .NET 6: suporte a Hot Reload no ASP.NET Core

Novidades do .NET 6: melhorando a experiência na linha de comando com Response Files

.NET 6: primeiros testes

E como estou abordando aqui novidades do Microsoft Build 2021, aproveito este espaço para um convite…

No dia 02/06/2021 (quarta) às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Coding Night.

Desta vez uma mesa redonda discutindo as novidades e os grandes anúncios do Build 2021. Um bate papo cobrindo tecnologias como .NET, C#, ASP.NET Core, MAUI, Visual Studio, Visual Studio Code, e Microsoft Azure!

Para participar faça sua inscrição no link a seguir, a transmissão acontecerá via YouTube:

https://bit.ly/novidades-build-2021

Dentre as novidades para ASP.NET Core que integram o Preview 4 do .NET 6 temos agora a possibilidade de criação de minimal APIs… Mas o que seria isto na prática?

Supondo que criemos por meio do comando abaixo um novo projeto em .NET 5, utilizando o template ASP.NET Core Empty:

dotnet new web -n ExemploSimpleWebApp

Analisando a estrutura do projeto criado no Visual Studio Code notaremos que constam no mesmo arquivos com as implementações das classes Program e Startup:

Na listagem a seguir temos a implementação da classe Program:

E na próxima o código que define Startup:

Estamos sem dúvidas diante de um template (ASP.NET Core Empty) que considera o mínimo de configurações para a criação de uma Web App baseada em ASP.NET Core. Já disponibilizei inclusive exemplos envolvendo o uso deste template em aplicações para monitoramento de Health Checks no meu GitHub, além de posts aqui no blog:

.NET 5 + Health Checks: exemplos de implementação em projetos ASP.NET Core

.NET 5, ASP.NET Core, APIs REST e desenvolvimento Back-End: dicas para o dia a dia | Abril-2021

E no que o novo conceito de Minimal APIs difere ao considerarmos o ASP.NET Core em .NET 6?

Criando com a instrução a seguir um projeto ASP.NET Core de forma similar ao exemplo em .NET 5 (mais uma vez com o template ASP.NET Core Empty):

dotnet new web -n ExemploMinimalAPI

Teremos agora uma estrutura bem mais enxuta de projeto, contando apenas com os arquivos de configuração e o Program.cs (como demonstrado no próximo print com o Visual Studio Code):

E no caso específico de Program.cs, houve inclusive a omissão da classe Program e do método Main. Trata-se de um exemplo de utilização do recurso conhecido como Top Level Program (este conceito introduzido com o C# 9), em que existe a opção de não utilizar toda a estrutura convencional de inicialização de uma aplicação:

Esta abordagem possibilita certamente um código reduzido e mais direto em projetos Web simples, em que dependeríamos tradicionalmente da classe Startup e eventuais implementações de Controllers.

Na implementação a seguir efetuei algumas alterações, de forma que a aplicação se comporte como uma API REST extremamente simplificada (exibindo o horário atual e mensagens de texto):

Na próxima imagem podemos observar este exemplo em execução:

Clique nesta imagem para visualizar com uma melhor resolução

Os fontes deste exemplo já foram disponibilizados no GitHub:

https://github.com/renatogroffe/ASPNETCore6-Preview4-MinimalAPIs-REST_API

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet