ASP.NET - Conhecendo a Minimal API \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 04 Horas 

 34 Min 

 36 Seg 

   Tempo restante da oferta: 04 34 36 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) ASP.NET - Conhecendo a Minimal API  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/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.

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 4 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/asp-net-conhecendo-as-minimal-api.png)  

No .NET 6/[ASP.NET](https://www.treinaweb.com.br/blog/o-que-e-o-asp-net-core) 6 foram adicionados vários novos recursos, um desses recursos é um novo template para criação de [API’s web](https://www.treinaweb.com.br/blog/o-que-e-uma-api), conhecido como [Minimal API](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-6.0). 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](https://twitter.com/markrendle/status/1198324914102636545) em Go, [Python](https://www.treinaweb.com.br/blog/o-que-e-python), [C#](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-c-sharp) e [JavaScript](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-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](https://www.treinaweb.com.br/blog/como-instalar-o-csharp-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:

```bash
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:

```bash
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](https://www.treinaweb.com.br/blog/o-que-e-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:

```csharp
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](https://www.notion.so/ASP-NET-Conhecendo-as-Minimal-API-s-a09633d721c145f49955a0732c7f2d6a) 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:

```bash
dotnet run

```

Após a execução do comando acima veremos uma saída no nosso terminal como essa:

```bash
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:

```csharp
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](https://www.treinaweb.com.br/) temos o projeto prático [C# - Desenvolvendo uma API com C# e ASP.NET](https://www.treinaweb.com.br/projeto-pratico/c-sharp-desenvolvendo-uma-api-com-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#](https://www.treinaweb.com.br/busca?q=C%23).

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.

- [ #.NET ](https://www.treinaweb.com.br/blog/tag/dotnet)
- [ #C# ](https://www.treinaweb.com.br/blog/tag/csharp)
- [ #ASP.NET ](https://www.treinaweb.com.br/blog/tag/asp-net)
- [ #API REST ](https://www.treinaweb.com.br/blog/tag/api-rest)
- [ #minimal api ](https://www.treinaweb.com.br/blog/tag/minimal-api)

Autor

 ![Cleyson Lima](//secure.gravatar.com/avatar/db30efb102ffa5d5204cebe12060b111?d=mm)

## 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](https://www.treinaweb.com.br/blog/autor/cleyson-lima)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/08/07161700/gerenciamento-python-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     4 anos atrás

    ##  [ Empacotando e publicando pacotes Python no PyPi ](https://www.treinaweb.com.br/blog/empacotando-e-publicando-pacotes-python-no-pypi) 

     Neste artigo iremos aprender como funciona o processo de empacotar e distribuir nossos próprios pacotes Python no PyPi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/04/05114901/ORLEANS-NET-CORE-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Criando uma aplicação distribuída com ASP.NET Core e o Microsoft Orleans ](https://www.treinaweb.com.br/blog/criando-uma-aplicacao-distribuida-com-asp-net-core-e-o-microsoft-orleans) 

     Veja o exemplo de uma aplicação ASP.NET Core acessando os dados de um servidor cluster definido com o Microsoft Orleans.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/08/14131229/HEALTH-CHECKS-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ Verificando a integridade da aplicação ASP.NET Core com Health Checks ](https://www.treinaweb.com.br/blog/verificando-a-integridade-da-aplicacao-asp-net-core-com-health-checks) 

     Verificar e monitorar a integridade de uma aplicação web é algo essencial, principalmente em ambientes distribuídos. O ASP.NET Core facilita esta tarefa através de Health Checks, como você verá neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/08/01172547/NET-CORE-3-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ .NET Core 3.0 - Criando tarefas de segundo plano com Worker Service ](https://www.treinaweb.com.br/blog/net-core-3-0-criando-tarefas-de-segundo-plano-com-worker-service) 

     Você já quis criar tarefas em segundo plano com o .NET Core? Na versão 3.0 foi introduzido o template Worker Service que facilita a criação deste tipo de aplicação. Caso tenha passado por uma situação assim, neste artigo mostramos como você pode aproveitar este novo recurso do .NET Core 3.0.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/02/18175820/RAZOR-COMPONENTS-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     8 anos atrás

    ##  [ .NET Core 3.0 - Razor Components ](https://www.treinaweb.com.br/blog/net-core-3-0-razor-components) 

     Conheça as aplicações Razor Components que serão adicionadas no .NET Core 3.0.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/tostring-400x280.jpg)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     10 anos atrás

    ##  [ Para que servem os métodos ToString(), Equals() e GetHashCode()? ](https://www.treinaweb.com.br/blog/para-que-servem-os-metodos-tostring-equals-e-gethashcode) 

     Neste artigo vamos entender como funcionam e para que servem os métodos ToString(), Equals() e GetHashCode() em linguagens baseadas no .NET e no Java.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/01/06113752/streaming-api-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ ASP.NET Core - Criando uma Streaming API ](https://www.treinaweb.com.br/blog/asp-net-core-criando-uma-streaming-api) 

     Streaming não se resume apenas a conteúdo de media. Aprenda neste artigo como criar uma streaming API de dados no ASP.NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/07/13150455/aplicacoes-self-contained-com-o-net-core-400x280.jpg)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     8 anos atrás

    ##  [ ASP.NET Core: Compreendendo AddMvc(), AddMvcCore(), AddControllers(), AddControllersWithViews() e AddRazorPages() ](https://www.treinaweb.com.br/blog/asp-net-core-compreendendo-addmvc-addmvccore-addcontrollers-addcontrollerswithviews-e-addrazorpages) 

     Aprenda quando utilizar os métodos AddMvc(), AddMvcCore(), AddControllers(), AddControllersWithViews() e AddRazorPages() em uma aplicação ASP.NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/enviando-e-mails-no-asp-net-core-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Enviando e-mails no ASP.NET Core ](https://www.treinaweb.com.br/blog/enviando-e-mails-no-asp-net-core) 

     O .NET possui um módulo nativo para o envio de e-mails. Entretanto, veja como facilitar este processo utilizando a biblioteca Coravel.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/05/14132313/o-que-e-o-asp-net-core-400x280.png)  [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) 

     7 anos atrás

    ##  [ O que é o ASP.NET Core? ](https://www.treinaweb.com.br/blog/o-que-e-o-asp-net-core) 

     Uma evolução do ASP.NET, o ASP.NET Core é uma plataforma leve, rápida e modular, que funciona em conjunto com a plataforma .NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/10/deploy-asp-net-core-linux-nginx-400x280.png)  [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) 

     6 anos atrás

    ##  [ Publicando uma aplicação ASP.NET Core no Linux com o Nginx ](https://www.treinaweb.com.br/blog/publicando-uma-aplicacao-asp-net-core-no-linux-com-o-nginx) 

     Veja todo o processo de publicação de deploy de uma aplicação ASP.NET Core no Linux utilizando o Nginx.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/CACHE-DISTRIBUÍDO-ASP-NET-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Implementando cache distribuído no ASP.NET Core ](https://www.treinaweb.com.br/blog/implementando-cache-distribuido-no-asp-net-core) 

     Veja como é simples implementar cache distribuído no ASP.NET Core, utilizando o Redis ou o SQL Server.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **04h 34min 36s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
