Criando uma api com .NET 6 — parte 1

Marcio Nizzola
5 min readMar 11, 2022

--

Em 2019 escrevi um artigo intitulado “Criando a primeira API com .NET Core” artigo este que na data de hoje está chegando à quase 5.000 visualizações.

Dada a relevância do tópico, resolvi escrever um artigo atualizado, demonstrando o mesmo exemplo, mas agora fazendo essa API utilizando .NET 6 com Minimal Api!

Então para começar, desta vez não vamos nos prender à somente criá-la dentro do Visual Studio, nesta primeira parte faremos utilizando o Visual Studio, mas na outra parte, faremos o mesmo com VCCode !

Criando pelo Visual Studio 2022

Então para começar, vamos abrir o Visual Studio e escolher o template “Asp Net Core Empty” para criar um projeto limpo.

Pronto, então agora temos nosso projeto criado, e na área em destaque em vermelho, você pode ver os objetos criados.

Vamos então nos concentrarmos no arquivo Program.cs, pois agora no .NET 6, a estrutura de inicialização foi simplificada e será um pouco diferente do que estávamos acostumados (veja minha postagem anterior sobre Minimal Api´s).

Caso executemos o programa com a configuração padrão o navegador vai exibir apenas um “Hello World”.

Isto acontece por que o método “get” que está definido no program.cs está com uma saída de texto padrão conforme vemos na linha 4 do código.

Então vamos dar início à criação de uma API para cadastramento de produtos, bem básica somente para entendermos os conceitos principais.

Primeiramente, vamos criar uma classe para nossos produtos, chamando-a de “ProdutosModel”.

Então criada a classe, vamos inserir as suas propriedades conforme a imagem abaixo:

Então se pensarmos numa API com funções CRUD (Create/Read/Update/Delete) temos que criar seus endpoints, é aí que estará a diferença em relação ao que fazíamos ao utilizar Controllers, do que vamos fazer desta vez.

Primeiro vamos criar uma classe de serviço, onde vamos colocar 2 métodos, um que lista todos os itens, e outro que lista um item específico.

Para isto, começaremos criando uma Interface, que chamaremos de “IProdutosService”

E depois a sua respectiva classe que chamaremos de “ProdutosService”, onde fizemos uma lista “fake” para podermos devolver dados na nossa consulta. Muita calma nessa hora, depois faremos o uso de banco de dados…..

Os métodos implementados “GetOne” e “GetAll” devolvem respectivamente um produto ou todos os produtos, e serão utilizados para devolver os dados quando fizermos uma requisição à nossa API.

Primeiramente vamos pensar em 2 endpoints para Exibir um item, ou Exibir vários itens.

Que serão construídos utilizando o conceito de Minimal Api (saiba mais aqui), portanto serão implementados inicialmente dentro do Program.cs

As mudanças realizadas são:

  1. Inclusão da injeção de dependência da classe de serviços e da sua interface (se não sabe do que se trata, há um artigo mais antigo explicando)
  2. Criação dos dois métodos, para obter todos e obter um produto pelo seu id específico.

Vamos detalhar o primeiro item:

  1. rota do endpoint — aqui declara-se como será o endereço em que vamos submeter a nossa consulta
  2. origem do objeto que estamos inserindo na nossa chamada, como vamos utilizar um serviço que foi instanciado via Injeção de Dependência (é obtido dos serviços) então o uso de “FromService” se faz necessário.
  3. Declaramos o objeto _service para usarmos uma instância de “IProdutoService” ou seja, a nossa classe “ProdutoService”.
  4. vamos instanciar uma lista, a partir da chamada do método “GetAll” do nosso “ProdutoService”.
  5. Vamos devolver um resultado indicando sucesso “Results.Ok” com a lista de objetos, que será devolvida em formato JSON.

O resultado quando chamado o endpoint via navegador ou outra ferramenta será este:

Agora vamos ver como funciona o segundo método

Podemos ver que a única diferença é a utilização de um parâmetro, para identificar o produto que queremos buscar.

  1. informamos na rota o nome do parâmetro (no caso id)
  2. inserimos no método a origem “FromRoute” dizendo que o parâmetro virá da rota e declaramos o tipo e nome da variável.
  3. fazemos a chamada para a classe de serviço, que buscará na lista existente.

E o resultado ao executarmos é este:

Portanto agora podemos dizer que o básico da API está feito, temos 2 métodos implementados.

FUNCIONA !!

Agora vamos incrementar um pouco, precisamos de uma documentação para facilitar nossos testes, então vamos adicionar o Swagger !

Onde após instalarmos o pacote necessário, teremos que fazer a inclusão de 2 blocos de comandos no nosso program.cs.

O Swagger tem outras opções, onde podemos colocar título para a aplicação, dentre outras informações, mas nesse momento vamos focar apenas no básico.

Agora se executarmos na nossa máquina e chamarmos o endereço \swagger, aparecerá esta interface, onde podemos realizar testes e validar o uso da nossa API no browser

Maiores detalhes para implementar o Swagger: https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-6.0&tabs=visual-studio

Na próxima parte, faremos o mesmo projeto, só que agora utilizando o linha de comando e VSCODE.

Caso queira obter o código fonte, acesse-o em https://github.com/NIZZOLA/AulaWebAPI2022

--

--

Marcio Nizzola

Microsoft MVP | Software Architect na CI&T | Prof. da Etec Itu | Membro Fundador da Comunidade Itu Developers.