Organizando uma API construída com Minimal Api no .NET 6
Nos post´s anteriores….
Criando uma api com .NET 6 — parte 1 | by Marcio Nizzola | Medium
Criando uma API com .NET 6 usando VSCODE — parte 2 ! | by Marcio Nizzola | Medium)
falei sobre Minimal API, onde fiz o básico, com todos os nossos endpoints inseridos no Program.cs, o que ao meu ver gera um código bastante grande, principalmente se começarmos a ter muitos endpoints e serviços, isto não é nada aderente aos princípios de Clean-Code.
Para organizar melhor a nossa API, vou realizar algumas mudanças na sua inicialização do projeto, partindo do princípio, temos nosso “program.cs” assim:
Podemos ver nos dois blocos destacados, que o código está com detalhes que poderiam ser segmentados em classes separadas, deixando muito mais limpo e organizado.
Para instanciar os nossos endpoints, vamos criar uma classe estática, com um método de extensão da classe “WebApplication” (não sabe o que é? veja Tenha mais qualidade de código C# com o uso de “Extensions Methods” | by Marcio Nizzola | Medium ) , dentro da pasta “Startup” visando deixar o nosso projeto mais organizado, nesta classe iremos inserir as chamadas para todos os endpoints, mas já visando um crescimento futuro, onde tenhamos endpoints diversos, resolvi segmentar em mais uma divisão, criando um arquivo para cada rota.
E para que tenhamos uma classe separada, com somente os elementos da rota do endpoint de Produtos, vamos criar uma classe estática “ProdutosEndpoints”, e nela inserir todos os elementos.
Observe que ela também extende a classe “WebApplication”.
Vamos agora também tirar de lá do “program.cs” a injeção de dependência também, para um arquivo separado, que iremos inserir dentro da pasta “Startup”.
Pronto, está montada a estrutura, agora é só inserir a referência para o namespace “WebAPI.Startup” no topo do program.cs para que os métodos de extensão sejam incorporados, e colocar as chamadas para nossos métodos de extensão.
Olhe como ficou o nosso program.cs agora ?
Com isto, nosso projeto ficou muito mais organizado para encontrarmos os objetos em locais separados, conforme a figura abaixo:
Pronto, está agora tudo organizado ! Bem melhor ?
Repositório do projeto: https://github.com/NIZZOLA/AulaWebAPI2022/