
2023-01-24 12:00:00
AutoMapper w ASP.NET Core API
Mapowanie klas modelu do obiektów DTO można zautomatyzować przy pomocy np. AutoMappera. Sama biblioteka nie jest już nowością na rynku i liczy sobie ponad 10 lat. Integracja z ASP.NET Core API jest bardzo prosta. Poniżej instrukcja:1. Instalujemy dwie paczki:AutoMapperAutoMapper.Extensions.Microsoft.DependencyInjection2. Tworzymy plik zawierający konfigurację mapowaniausing AutoMapper;
using BookStoreApi.Models;
using BookStoreApi.Models.Dto;
namespace BookStoreApi;
public class MappingConfiguration : Profile
{
public MappingConfiguration()
{
CreateMap<Book, BookDto>().ReverseMap();
}
}Metoda ReverseMap() pozwala na konfigurację mapowania zarówno z typu Book na BookDto jak i z obiektu BookDto na Book. Jeżeli nie potrzebujemy konwersji w drugą stronę możemy pominąć jej wywołanie.3. W pliku Program.cs dodajemy do kontenera DI AutoMapper:builder.Services.AddAutoMapper(typeof(MappingConfiguration));4. Ostatnim krokiem jest wstrzyknięcie interfejsu IMapper do kontrolera i użycie metody Map. Przykład:[ApiController]
[Route("api/[controller]")]
public class BookStoreController : ControllerBase
{
private readonly BookStoreDbContext _bookStoreDbContext;
private readonly IMapper _mapper;
public BookStoreController(BookStoreDbContext bookStoreDbContext, IMapper mapper)
{
_bookStoreDbContext = bookStoreDbContext;
_mapper = mapper;
}
[HttpGet]
public async Task<ActionResult<IEnumerable<BookDto>>> GetBooks()
{
return Ok(_mapper.Map<List<BookDto>>(await _bookStoreDbContext.Books.ToListAsync()));
}
}Rezultat po uruchomieniu aplikacji będzie następujący:
Przejdź do pełnego artykułu