C# ASP .NET

ASP.NET - Conhecendo a Minimal API

Neste artigo vamos conhecer um dos recursos que foram adicionados no .NET 6/ASP.NET 6, que é um novo template de aplicações Web, a Minimal API.

há 1 ano 8 meses

Formação Full-stack: Desenvolvedor ASP.NET
Conheça a formação em detalhes

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.

Autor(a) do artigo

Cleyson Lima
Cleyson Lima

Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python.

Todos os artigos

Artigos relacionados Ver todos