A proposta desse tutorial é apresentar, de forma prática, como criar uma aplicação .Net Core Web API, utilizando injeção de dependência.
Antes de começarmos o projeto, vamos pontuar algumas facilidades da estrutura Web API:
- Framework de serviços HTTP de implementação fácil e prática;
- Utiliza a arquitetura REST (sigla em inglês para: Representational State Transfer), onde as solicitações HTTP utilizam o mesmo endereço de URL;
- As requisições utilizadas para esse serviço são chamadas de método HTTP ou verbo, sendo: GET, POST, PUT, DELETE, TRACE, OPTIONS, PATCH, CONNECT, HEAD.
Os mais utilizados são: GET, POST, PUT, DELETE (o Visual Studio já implementa essas chamadas através do projeto: Aplicativo Web ASP.NET Core - Web API); - Aplicações mobile, web e serviços podem consumir as chamadas de Web API;
- As respostas das chamadas são no formato MediaTypeFormatter e os mais utilizados são: JSON e XML.
Vamos para a parte prática: abra o Visual Studio 2017 e escolha o Aplicativo Web ASP.NET Core:
Na próxima tela, escolha o aplicativo API Web:
O projeto foi criado e notamos que na pasta Controller a classe ValuesController.cs, já implementa os quatro métodos HTTP mais utilizados.
O próximo passo é a implementação da classe Usuário. Para isso, crie uma pasta chamada Models e depois crie a classe Usuario.cs , conforme modelo abaixo:
Vamos criar o Repositório. Crie uma pasta com esse nome, após isso crie a interface IUserRepositorio.cs e implemente o seguinte código:
Em seguida, vamos criar a classe UserRepositorio.cs e implemente o código abaixo:
Feito isso, vamos implementar esses métodos na classe ValuesController.cs, seguindo os passos abaixo:
Antes de prosseguirmos, note que antes das chamadas HTTP, foi implementado a referência para o uso da interface IUserRepositorio:
Se você tentar executar essa aplicação, gerará um erro, pois precisamos referenciar essa injeção de dependência na classe Startup.cs - no método ConfigureServices, conforme código abaixo:
Temos dois pontos importantes nessa implementação:
- A referência para a injeção de dependência foi feita no método ConfigureServices, que é responsável pelos serviços utilizados pela aplicação;
- O serviço utilizado para referenciar a interface foi o AddSingleton().
Vale ressaltar que existem três tipos de serviços:
- AddScoped(): Compartilhado em uma única solicitação, ou escopo de serviço.
- AddTransient(): Criado em cada solicitação para o serviço.
- AddSingleton(): Uma única instância compartilhada ao longo da vida útil do
aplicativo.
Pronto, agora é só executar a aplicação e, como exemplo, teremos o retorno para a chamada GET():
O projeto está disponível no meu GitHub.