Novidades do .NET 7: Route Groups para organização de endpoints em Minimal APIs

Renato Groffe
2 min readFeb 13, 2023

--

Cuidados com a organização do código devem ser encarados como uma preocupação constante no desenvolvimento com Minimal APIs. A falta de um melhor planejamento pode resultar em trechos de código replicados em diversos pontos de um projeto: um bom exemplo disto são configurações repetidas inúmeras vezes para endpoints que em tese pertenceriam a um mesmo agrupamento de funcionalidades.

Levando em conta tais cenários, o .NET 7 traz uma funcionalidade chamada de Route Groups que simplifica a configuração de grupos de endpoints ao optarmos pelo modelo de Minimal APIs.

Já abordei inclusive esta novidade em uma live recente no Canal .NET:

O exemplo apresentado no vídeo envolve o uso de um Filter para validação de uma chave de acesso aos endpoints da aplicação, estando disponível no GitHub:

https://github.com/renatogroffe/ASPNETCore7-MinimalAPIs-Groups-Filters-Swagger_ContagemAcessos-ApiKey

Caso achem útil a solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

A implementação deste Filter foi também detalhada em outro artigo aqui no blog:

Novidades do .NET 7: Filters no tratamento de requisições em Minimal APIs

O objetivo é que criemos facilmente um agrupamento para os endpoints da API (rota /contador) cujas definições estão na imagem a seguir:

Na listagem a seguir está a implementação já contemplando o uso de um Route Group:

  • Uma chamada ao método MapGroup (linha 48) teve a definição de um endereço-base (/contador) e produzirá uma instância do tipo RouteGroupBuilder (namespace Microsoft.AspNetCore.Routing). Métodos para configuração de endpoints convencionais podem ser acionados a partir deste objeto, gerando economia de código e permitindo aplicar as mesmas configurações a mais de um endpoint (neste exemplo determinei a utilização do Filter AddApiKeyCheckingEndpointFilter);
  • A partir instância gerada via MapGroup o método MapGet foi acionado 2 vezes (linhas 50 e 70) para as configurações específicas de 2 endpoints (/contador/incrementar e /contador/decrementar). Esta mesma referência também seria utilizada com chamadas a outras operações como MapPost, MapPut

E finalizo este post com um convite…

Neste novo evento ONLINE e GRATUITO do Canal .NET serão apresentadas as principais novidades que integram o .NET 7, com exemplos de implementação já utilizando o C# 11 e o ASP.NET Core.

Quando: 06/03/2023 (segunda) a partir das 21:00 - horário de Brasília

Faça sua inscrição em:
https://bit.ly/live-dotnet7-novidades

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker