TypeScript ile Automapper kütüphanesi
Oluşturma Tarihi: 23.07.2024 04:14:00
Yazar: Beginnerdeveloper
Öncelikle bu kütüphane ne işe yarar ondan bahsedelim. Nesneleri maplemek için kullandığımız bir kütüphanedir. Örnek verecek olursak client tarafına gereksiz veya gösterilmemesi gereken bazı veri tabanı bilgileri vardır. Mesela kullanıcı şifresi. Evet şifreyi hashliyoruz ancak yine de gönderilmesi mantıksızdır ve güvenlik açığı oluşabilir. Bu gibi durumların önüne geçmek için bu kütüphaneyi kullanıyoruz.
Eee tamam da biz bunu tek tek de yapabiliriz gerek varmı ki?
- Cevabımız evet var maaliyet ve zaman kazandırıyor.
Çok basit projelerde kullanmak mantıklı olmayabilir ancak içeriği çok fazla olan nesneyi, dto nesnesine tek tek yazarak aktarmak doğal olarak yorucu olur.
Bu kütüphane .NET tarafında da var ve Türkçe kaynak çok fazla olduğu için burada anlatılmasını gereksiz buluyorum. Ancak Typescript tarafında nasıl kullanıldığına dair Türkçe kaynak göremediğim için ben yapma kararı aldım. :)
Öncelikle 2 adet npm paketini projemize dahil etmeliyiz.
-> npm i @automapper/core
-> npm i @automapper/classes
Daha sonra maplenecek nesnelerimizi automappera bildirmemiz gerekiyor.
Bu projemizde BaseEntity nesnemizde var aynı işlemi onada uygulayalım.
Bu şekilde @AutoMap() ile entity nesnemizin içeriğini bildiriyoruz.
Aynı işlemi dto içinde yapmalıyız.
Ancak bir sorunumuz var TypeScript yapılandırmamız eğer bazı ayarlarımız eksikse burada hata verecektir. Bu yüzden tsconfig.ts dosyamız bu şekilde olmalı.
Artık işimiz bitti MapProfile adında kendi fonksiyonumuzu oluşturup hangi nesnelerin nasıl mapleneceği hakkında automappera bilgi verelim.
İşte burada son işlemimizi yapmış oluyoruz. Artık User nesnesi UserDto nesnesine maplenebilecek. createMap() fonksiyonu ile istediğimiz maplenecek nesneleri yazabiliriz. Peki nasıl kullanacağız.
Burada da Service katmanımızda nasıl nesneyi mapleyip kullancağımızın örneği vardır.
Çok fazla fonksiyon içeriğide mevcut maplenirken istediğimiz nesnenin alanına başka değerler de atayabiliyoruz örnek olarak :
Burada RegisterDto User nesnesine maplenirken createDate alanımıza günün tarihini atıyorum. Ve ben bu mapleme işlemini her kullandığımda artık tek tek elimle bu tarih atamasını yazmam gerekmeyecek.
Daha fazlası için ilgili döküman: https://automapperts.netlify.app/.
Son olarak okuduğun için teşekkür ederim. :)