.NET 7 + dotnet-apiversioning: criando rapidamente APIs REST com versionamento de endpoints via CLI

Renato Groffe
4 min readSep 11, 2023

--

O uso extensivo da linha de comando já deixou há tempos de ser uma mera tendência no desenvolvimento com C#. Hoje constitui uma prática rotineira e de grande aceitação, contribuindo de forma significativa para uma maior produtividade na forma como trabalham muitos Desenvolvedores .NET.

Levando em consideração esses fatores, eu vinha há tempos pensando em alguma forma de contribuição por meio de um projeto open source voltado à comunidade .NET e que tirasse proveito de todo o potencial oferecido pela combinação .NET CLI + Global Tools. Tudo isso, claro, seguindo com a produção dos inúmeros exemplos que costumo semanalmente disponibilizar como repositórios no GitHub.

E eis que finalmente surgiu uma oportunidade recentemente… Tive a ideia de uma solução que acredito ser útil a muitas pessoas, através de uma ferramenta de linha de comando com suporte inicial ao .NET 7 e que tentarei manter atualizada em releases futuros da plataforma: trata-se da Global Tool dotnet-apiversioning, uma alternativa disponibilizada publicamente no NuGet para criar rapidamente APIs REST com o versionamento de endpoints!

Para acessar a página desta Global Tool no NuGet acesse o link:

https://www.nuget.org/packages/DotNetApiVersioningTemplates

Disponibilizei também este projeto de forma pública no GitHub, com o mesmo podendo ser acessado por meio do link a seguir. Se você achou a solução que criei útil e quer apoiar, peço por favor um um ⭐️ no repositório (isto com certeza aumentará o alcance do mesmo e que a ferramenta seja conhecida por mais pessoas):

https://github.com/renatogroffe/DotNetApiVersioningTemplates

Como opções iniciais temos a possibilidade de geração de projetos baseados em Web APIs/Controllers e Minimal APIs, com isto acontecendo a partir da linha de comando. A ferramenta dotnet-apiversioning foi concebida pensando em cenários de desenvolvimento multiplataforma, podendo ser utilizada tranquilamente em ambientes Windows, Linux e macOS que contem com o .NET 7 pré-instalado.

Essa solução foi descrita em detalhes — configuração, implementação, workflow do GitHub Actions com publicação no feed público do NuGet — em uma live recente no Canal .NET, a qual está disponível para se assistir gratuitamente no YouTube (recomendo fortemente que você assista o vídeo a partir de 49:53):

Nos testes descritos neste artigo instalei a versão 0.0.3 de dotnet-apiversioning, executando para isto o comando:

dotnet tool install --global DotNetApiVersioningTemplates --version 0.0.3

Podemos executar esta ferramenta utilizando a instrução — com um hífen (“-”) separando os termos dotnet e apiversioning:

dotnet-apiversioning

Na próxima animação podemos observar a criação de uma API REST com a instrução dotnet-apiversioning e utilizando o template baseado em Web APIs/Controllers:

Clique nesta imagem para visualizar com uma melhor resolução

A imagem seguinte traz este projeto carregado a partir do Visual Studio Code, com os diferentes arquivos que compõem o mesmo:

Clique nesta imagem para visualizar com uma melhor resolução

Já na próxima imagem temos a API REST em execução, com cada uma de suas versões podendo ser selecionada através da interface gráfica do Swagger/OpenAPI:

Clique nesta imagem para visualizar com uma melhor resolução

Também podemos criar um projeto sem o hífen entre os termos dotnet e apiversioning, como no exemplo a seguir que se baseia no uso de Minimal APIs:

dotnet apiversioning
Clique nesta imagem para visualizar com uma melhor resolução

A estrutura deste projeto ao ser carregado com o Visual Studio Code está na imagem seguinte:

Clique nesta imagem para visualizar com uma melhor resolução

O que viabilizou a implementação da ferramenta dotnet-apiversioning foi o projeto ASP.NET API Versioning, uma iniciativa open source mantida pela própria Microsoft e que disponibiliza diversos packages voltados à configuração do versionamento de APIs em aplicações .NET. Caso queira saber mais sobre o ASP.NET API Versioning, seguem 2 artigos que publiquei neste blog recentemente:

.NET 7 + Minimal APIs: versionando APIs REST de forma descomplicada

.NET 7 + ASP.NET Core: versionamento de APIs REST em um exemplo simples

E finalizo este post com um convite…

Acompanhe neste novo evento ONLINE e GRATUITO no Canal .NET dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 7, C#, ASP.NET Core e Azure Functions. Ao longo da apresentação será abordado o uso de diferentes frameworks, serviços na nuvem, mensageria e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos ainda novidades do .NET 8 e C# 12 demonstradas através de exemplos práticos!

Quando: 27/09/2023 (quarta) a partir das 21:00 — horário de Brasília

Faça sua inscrição em:
https://bit.ly/live-backend-dotnet-set-2023

--

--

Renato Groffe

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