.NET CORE 2.0 + Algumas tecnologias

Pessoal, vamos lá para mais um exemplo, este será o primeiro de dois artigos que pretendo fazer, vou dividir pois acho que é muito conteúdo para um artigo só.

E como dizia meu velho amigo Aristóteles :

É fazendo que se aprende a fazer aquilo que se deve aprender a fazer.

Então “bora” fazer!!!

EfInMemory1

O código fonte deste projeto como sempre se encontra no meu github basta fazer o download e abrir no Visual Studio (para este exemplo utilizei o 2017) e se divertir!

O ideal é que você baixe o exemplo e siga o artigo para entendimento.

Não vou aqui explicar linha por linha das classes do projeto, vou tentar explicar algumas funções e tecnologias, espero que você leitor, baixe e rode o projeto debugando para entender o funcionamento.

Utilizando o Entity Framework Core In-Memory.

O primeiro ponto que gostaria de falar é sobre o Entity Framework Core In-Memory, muitas ocasiões os times de desenvolvimento são separados do time de banco de dados, ou surge aquela questão “primeiro vamos precisar do banco de dados para depois começar o desenvolvimento” ou muitas vezes queremos somente criar um “protótipo  funcional” da aplicação antes de efetivamente criar ou solicitar um banco de dados.

Nessas ocasiões o Entity Framework Core In-Memory pode ser utilizado, o In-Memory é um provedor do EF Core, basicamente ele irá guardar os dados em memória, ou seja eles estarão lá enquanto a aplicação está no ar, fechou perdeu seus dados.

Depois de validar seu protótipo ou já ter seu banco de dados basta trocar o provedor que a aplicação deverá funcionar sem impacto. O EF Core possui provedores para bancos como o SQL SERVER, SQLite, Postgree, etc.

O primeiro passo é instalar o pacote Nuget:

  • Microsoft.EntityFrameworkCore.InMemory

Para configurar abra o arquivo Startup.cs e insira dentro do método ConfigureServices:

Pronto a aplicação já está configurada para usar o EF CORE In-Memory.

Utilizando e customizando o Swagger.

Agora vamos falar do Swagger, essa ferramenta já é bem conhecida e não vou explicar aqui seu funcionamento, basicamente utilizo para expor, documentar e testar meus serviços REST,  vou apenas explicar como customizei a interface, mudei o logo, o titulo e as cores principais e ainda como utilizar token de autenticação na sua interface.

Para configurar o Swagger  adicione o pacote Nuget:

  • Swashbuckle.AspNetCore na versão (1.1.0)

Usei a versão antiga, já existe uma mais nova, mas algumas coisas nas configurações mudaram, vou estudar e depois mostro as diferenças.

Para configurar abra o arquivo Startup.cs e insira dentro do método ConfigureServices:

No código acima basicamente estamos habilitando o Swagger a trabalhar com um token JWT,  configurando a versão, descrição e colocando informações de contato na interface.

O método IncludeXmlComments é muito importante pois é através dele que os comentários descritos nos métodos serão transformados na documentação da API.

Um detalhe aqui importante, você precisa setar nas propriedades do projeto na aba de “Build” o campo XML documentation file como na imagem abaixo para funcionar corretamente.

EfInMemory3

Agora vamos ver como customizar a tela do Swagger, adicione o seguinte código dentro do método Configure:

No código acima no método app.UseSwaggerUI injetamos um arquivo .css e um arquivo .js eles são responsáveis pela customização da interface. Estes arquivos e encontram em uma pasta chamada swagger-ui dentro de wwwroot, dentro da pasta também coloquei um logo no formato .svg.

O método app.Run efetuar o redirect para a página do swagger assim você não precisa setar a url na mão quando subir sua aplicação. A página do Swagger irá iniciar automaticamente.

Como deverá ficar a interface:

EfInMemory2

Como usar um token de autenticação na tela do Swagger.

A criação do token JWT ficará para a segunda parte deste artigo, só vou adiantar como utilizar um token na tela do Swagger já que estamos falando dele.

Alguns métodos da nossa API serão seguros e só irão funcionar se enviado no header da solicitação um token válido. A ideia aqui é que o usuário faça o login e “ganhe” um token e para consumir os métodos seguros.

Mas como passar um token na interface do Swagger? simples veja a imagem abaixo:

EfInMemory4

E com isso finalizamos o assunto Swagger.

Como utilizar o AutoMapper em uma aplicação .NET CORE.

O AutoMapper é uma biblioteca que transfere valores entre uma classe para outra, no nosso projeto a intenção é transformar DTOs (Data Transfer Objects) em Entidades do sistema.

Gosto de utilizar DTO’s nos meus projetos e para não ficar transferindo na “mão”  os valores de um DTO para uma Entidade fica muito mais fácil usar o AutoMapper.

Para configurar o AutoMapper adicione dois pacotes via Nuget:

  • AutoMapper;
  • AutoMapper.Extensions.Microsoft.DependencyInjection

Para configurar abra o arquivo Startup.cs e insira dentro do método ConfigureServices:

services.AddAutoMapper();

Depois de configurado o AutoMapper precisamos criar uma classe que será responsável pelo mapeamento entre Dto e Entidade:

E agora como usar depois de configurado? No meu exemplo faço a injeção da interface do AutoMapper (IMapper) no construtor da classe como no exemplo abaixo:

E quando efetivamente precisar efetuar um mapeamento:

Observe as linhas 9 e 22 do código acima, ali acontece as transformações. Aqui nesse exemplo as propriedades da Entidade e do DTO são as mesmas então o mapeamento acontece automaticamente.

Podemos ter situações onde uma classe possui uma  propriedade com nome diferente do propriedade da classe de destino, para isso o AutoMapper possui configurações para resolver esse problema (fica para um próximo artigo mostrar essa função).

Por enquanto é só no próxima parte vamos ver:

  • Como configurar e utilizar token JWT (Jason Web Token);
  • Como criar políticas de segurança;
  • Como criar senhas seguras para seus usuários;
  • Trocar o provider do EF Core para uma base de dados real;

Espero ter ajudado, dúvidas estou a disposição para ajudar, o código fonte completo como escrevi no inicio do artigo se encontra no meu github, fique a vontade para baixar e verificar o código.

Qualquer comentário sobre esse artigo é bem vindo, quem souber outras formas de fazer, outras tecnologias que podem ser implementadas, outras dicas e puderem contribuir eu agradeço muito e a comunidade só tem a ganhar!

Um abraço e até o próximo artigo!

Marcelo

Leave a Reply

O seu endereço de e-mail não será publicado.