No .NET 6/ASP.NET 6 foram adicionados vários novos recursos, um desses recursos é um novo template para criação de API’s web, conhecido como Minimal API. Neste artigo vamos entender como criar uma aplicação utilizando esse novo template e como o mesmo funciona.
Motivação da Minimal API
A história que motivou a criação desse novo template começou em novembro de 2019. Em uma publicação no Twitter, a comunidade estava discutindo sobre a implementação de uma calculadora utilizando sistemas distribuídos em Go, Python, C# e JavaScript. Após a implementação do sistema a comunidade começou a comparar a quantidade de arquivos e linhas de código eram necessárias para alcançar tal resultado e perceberam que em quase todas as linguagens, com exceção do C# era possível criar o sistema com poucos arquivos e poucas linhas de código.
No .NET até a versão 5 para se criar uma API era necessário utilizar um template que era bem mais complexo, com múltiplos arquivos e com a aplicação totalmente separada em camadas. O que à primeira vista até parece algo bom, mas em ocasiões onde necessitamos criar uma API com apenas um único endpoint, por exemplo, esse tipo de abordagem começa a atrapalhar mais do que ajudar.
Outro ponto é que uma alta complexibilidade na criação de simples aplicações pode afastar novos desenvolvedores da plataforma .NET por acharem a mesma difícil demais. Pesando nesses pontos, o time de desenvolvedores do .NET decidiu que deveriam adicionar uma nova maneira mais simplificada e minimalista de desenvolver API com o .NET e assim surgiu o template Minimal API.
Criando uma Minimal API
Para podermos utilizar esse novo template é necessário, termos o .NET 6 instalado em nossa máquina, caso não tenha o .NET instalado você pode ver o processo de instalação no artigo Como instalar o C# e nosso primeiro exemplo.
Uma vez que tenhamos o .NET 6 devidamente instalado em nossa máquina podemos criar uma aplicação ASP.NET com o template de Minimal API utilizando o .NET CLI com o seguinte comando:
dotnet new web -o MinimalApiExample
No comando acima estamos chamando o .NET CLI e com o comando new
vamos informar a CLI que queremos criar um projeto .NET, logo em seguida temos o parâmetro web
que informa qual o template a ser utilizado, para utilizarmos o template de Minimal API utilizamos o parâmetro web
e por fim com a flag -o
informamos que o projeto será criado em uma nova pasta e que essa pasta irá se chamar MinimalApiExample
.
Estrutura de pastas e arquivos de uma Minimal API
Após o termino da execução do comando de criação do projeto, será criada uma pasta chamada MinimalApiExample
e dentro dessa pasta teremos a seguinte estrutura de pastas e arquivos:
MinimalApiExample/
├── MinimalApiExample.csproj
├── Program.cs
├── Properties
│ └── launchSettings.json
├── appsettings.Development.json
├── appsettings.json
Na estrutura de pastas criada teremos os seguintes arquivos:
- MinimalApiExample.csproj: é o arquivo de configuração do projeto, todos os projetos .NET possuem esse arquivo;
- Program.cs: é o arquivo principal do projeto, é por ele que a aplicação irá iniciar;
- appsettings.json: é um arquivo de configuração em formato JSON;
-
appsettings.Development.json: tem o mesmo propósito do arquivo
appsettings.json
, porém possui configurações apenas para ambiente de desenvolvimento; - Properties/launchSettings.json: é o arquivo que contém configurações de como o projeto será executado, é um arquivo padrão em todos os projetos criados com o ASP.NET.
Veja que fora os arquivos padrões criados em todos projetos .NET/ASP.NET a nossa aplicação com o template Minimal API só precisa do arquivo Program.cs
Entendendo o código de uma Minimal API
Ao abrir o arquivo Program.cs
veremos o seguinte código:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Veja que no único arquivo que possui de fato algum código nós temos apenas quatro linhas de código. Agora vamos entender o que cada linha desse código está fazendo, na primeira linha nós temos a criação do WebApplicationBuilder
que é uma classe utilizada para criar e configurar a nossa aplicação, logo em seguida nós temos a criação da aplicação de fato através do método Build
da classe WebApplicationBuilder
que irá retornar uma instância da classe WebApplication
.
Após a criação da aplicação nós temos a chamada do método MapGet
da classe WebApplication
responsável por definir um novo endpoint em nossa aplicação, esse método recebe dois parâmetros sendo o primeiro parâmetro uma string que indica qual a rota será mapeada e o segundo parâmetro é uma expressão lambda que terá a lógica que será executada quando esse a rota for acessada.
Outro ponto importante é que o método MapGet
faz o mapeamento para a rota quando ela recebe requisições com o verbo HTTP GET e assim como temos o método MapGet
para mapear requisições feita com GET temos MapPost
para requisições POST, MapDelete
para requisições DELETE e MapPut
para requisições PUT.
E por fim na última linha de código do Program.cs
temos a execução do método Run
da classe WebApplication
que vai iniciar a nossa aplicação.
Executando e testando a aplicação
Agora que temos a nossa aplicação com Minimal API criada e que já entendemos como ela funciona, vamos executar e testar a aplicação. Para executar o projeto utilizamos o comando abaixo:
dotnet run
Após a execução do comando acima veremos uma saída no nosso terminal como essa:
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7144
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5106
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: /home/cleysonph/workspace/asp-dotnet/MinimalApiExample/
Veja que no meu caso foi exibida a seguinte mensagem no terminal Now listening on: https://localhost:7144
, com essa mensagem o ASP.NET está informando que a aplicação está disponível no endereço https://localhost:7144.
Ao acessarmos o endereço https://localhost:7144 pelo próprio navegador iremos ver a mensagem Hello World
sendo exibida na página, o que é exatamente o que foi definido na rota padrão definida no arquivo Program.cs
com o seguinte trecho de código:
app.MapGet("/", () => "Hello World!");
Conclusão
Vimos nesse artigo o que é e como funciona uma das novas funcionalidades disponibilizadas no .NET 6/ASP.NET 6 que são as Minimal API’s. Como vimos no artigo esse é um recurso bem interessante, pois nos permite criar aplicações de forma muito rápida e sem a necessidade de escrever múltiplos arquivos com diferentes camadas, fazendo assim com que a plataforma .NET se torne mais amigável para novos desenvolvedores e principalmente nos permita desenvolver projetos de escopo pequeno de maneira mais rápida.
Caso queira aprender mais sobre o desenvolvimento de API’s com o ASP.NET, saiba que aqui na TreinaWeb temos o projeto prático C# - Desenvolvendo uma API com C# e ASP.NET, onde você verá na prática o desenvolvimento de uma API RESTFul utilizando o ASP.NET, esse projeto prático conta com 05h19 de vídeos. Conheça também nossos outros cursos de C#.
Veja quais são os tópicos abordados durante o projeto prático C# - Desenvolvendo uma API com C# e ASP.NET:
- Preparar o ambiente de desenvolvimento;
- Criar novos projetos e instalar pacotes com a .NET CLI;
- Como executar projetos em modo de depuração pelo .NET pelo Visual Studio Code;
- Modelar diferentes relacionamentos com o Entity Framework;
- Realizar validações com FluentValidation;
- Gerar PDFs a partir de um HTML com a biblioteca DinkToPdf;
- Utilizar o mecanismo de injeção de dependência do ASP.NET;
- Testar sua API pela interface gráfica do Swagger.