1. Gerando template
MinimalAPI é uma estrutura nova de requisição para API REST introduzida no .NET 8 que nos auxilia a criar API RESTs mais rápido utilizando uma implementação simples mas eficiente.
Essa nova estrutura ajuda a construir mais rapidamente APIs REST em .NET para uma arquitetura em Microserviços, diminuindo a necessidade de uma estrutura mais robusta para processos simples.
Criando pelo Terminal
Section titled “Criando pelo Terminal”-
Cheque a versão do seu .NET com o seguinte comando:
Verificando versão no Terminal dotnet --version -
Rode o seguinte comando no seu terminal:
Criando um projeto MinimalAPI template dotnet new web -n MinimalProject -
Acesse o seu novo template criado:
Acessando diretório do projeto cd MinimalProject
Criando pelo Visual Studio 2022
Section titled “Criando pelo Visual Studio 2022”- Inicie o Visual Studio sem vinculo a um projeto, clique em
Create a new project
- Selecione a opção de projeto
ASP.NET Core Empty
- Configure o nome do seu projeto e o nome da solution
- Defina a versão do .NET, preferencialmente da versão 8 ou maior
- Ele vai criar automaticamente e vai mostrar a
home page
e seus arquivos a direita
Organização dos arquivos
Section titled “Organização dos arquivos”O comando dotnet new web
irá criar um projeto template com uma rota de exemplo, sendo definida no arquivo Program.cs
Dentro do diretório terá a seguinte estrutura:
DirectoryProperties/
- launchSettings.json
Directoryobj/
- …
- Program.cs
- MinimalProject.csproj
- appsettings.Development.json
- appsettings.json
Um pouco de informação de cada arquivo:
- properties/launchSettings.json → Utilizado no .NET Core para configurar como o projeto será iniciado durante o desenvolvimento (quando rodamos o projeto no Visual Studio ou pelo comando
dotnet run
pelo terminal. - obj/ → É um diretório gerado automaticamente pelo .NET durante o processo de compilação do projeto (
dotnet build
). Ele guarda arquivos temporários usados pelo compilador, serve como um cache para acelerar builds futuros. Deve ser ignorado pelo.gitignore
para evitar de ser enviado para o repositório externo, pode ser deletado também porque ele é recriado sempre que rodar um build. - Program.cs → Este é o arquivo ponto de entrada de um projeto .NET, é onde a aplicação começa a rodar. Neste arquivo é definido como a aplicação será inicializada e todos os métodos e comandos para utilizarmos nosso projeto.
- MinimalProject.csproj → Arquivos
*.csproj
é um arquivo XML que diz para o .NET quais arquivos fazem parte do projeto, Lista os pacotes NuGet usados (dependencias externas), Define o tipo de projeto e possui as configurações de Build, versão .NET, diretórios, etc. - appSettings.json → Este arquivo é usado para armazenar configurações da aplicação, como strings de conexão, chaves de API, configurações de Logging e muito mais. Podemos definir configurações diferentes para cada ambiente de desenvolvimento que temos (Prod, Dev, Testing, entre outros) assim evita de utilizar as mesmas configurações em ambientes de teste e os de produção.
Código padrão inicial
Section titled “Código padrão inicial”Temos os seguintes códigos templates que vem junto da aplicação:
Arquivos de configuração
Section titled “Arquivos de configuração”{ "$schema": "https://json.schemastore.org/launchsettings.json", "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5020", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:7179;http://localhost:5020", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }}
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*"}
Arquivos do .NET
Section titled “Arquivos do .NET”var builder = WebApplication.CreateBuilder(args);var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <TargetFramework>net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup>
</Project>