ASP .NET Core -  Usando AutoMapper (revisitado) - II


 Hoje vamos voltar a usar o AutoMapper em uma aplicação Web API ASP .NET Core.

Continuando a primeira parte do artigo vamos criar o controlador FuncionariosController para testar o mapeamento feito usando o AutoMapper.

Criando o controlador FuncionariosController

Na pasta Controllers do projeto crie o controlador FuncionariosController:

using Api_AutoMapper.DTOs;
using Api_AutoMapper.Models;
using AutoMapper;
using Microsoft.AspNetCore.Mvc;

namespace Api_AutoMapper.Controllers
{
    [Route("api/[controller]")]
    [ApiController]

    public class FuncionariosController : ControllerBase
    {
        private readonly IMapper _mapper;
        public FuncionariosController(IMapper mapper)
        {
            _mapper = mapper;
        }

        [HttpPost]
        public IActionResult Post(Funcionario funci)
        {
            var funcionarioDto = _mapper.Map<FuncionarioDTO>(funci);          

            return Ok(funcionarioDto);
        }

    }
}

No controlador estamos injetando uma instância da interface IMapper do AutoMapper para poder realizar o mapeamento.

Para testar o mapeamento definimos o método Post onde vamos enviar via request os dados do funcionário a partir do tipo de origem que é a classe Funcionario e vamos realizar o mapeamento para o tipo de destino FuncionarioDTO.

Executando o projeto veremos a interface do Swagger exibindo o único endpoint definido no projeto:

Vamos enviar um request POST enviando as informações do funcionário:

Ao clicar no botão Execute iremos acionar o método Action Post do controlador onde o mapeamento será realizado e veremos o response retornado conforme abaixo:

Como podemos observar o mapeamento realizado gerou o objeto FuncionarioDTO contendo os valores:

{
  "nomeCompleto": "Jose Macoratti",
  "sexo": "M",
  "endereco": {
    "cidade": "São Paulo"
  },
  "isAtivo": true
}

Onde vemos a propriedade nomenompleto exibindo o nome concatenado, a propriedade sexo exibindo o valor 'M' , e a propriedade isativo exibindo o valor true.

Com isso concluímos que o nosso mapeamento esta funcionando corretamente.

O AutoMapper possui outros recursos como conversores e formatadores customizados que podemos usar em um cenário mais avançado mas isso é um tema para outro artigo.

Consulte a documentação neste link :  AutoMapper - Documentação

Pegue o projeto aqui :  Api_AutoMapper.zip

"Portanto, lembrai-vos de que vós noutro tempo éreis gentios na carne, e chamados incircuncisão pelos que na carne se chamam circuncisão feita pela mão dos homens;
Que naquele tempo estáveis sem Cristo, separados da comunidade de Israel, e estranhos às alianças da promessa, não tendo esperança, e sem Deus no mundo."
Efésios 2:11,12

Referências:


José Carlos Macoratti