Asp .Net Core FluentValidation

Merhaba arkadaşlar, bugün sizlerle beraber .Net Core bir uygulamada FluentValidation kullanımından bahsederek ufak örneklerle pekiştirmeye çalışacağız. Öncelikle FluentValidation nedir ve neden kullanırız kısaca bundan bahsetmek istiyorum.

Öncelikle FluentValidation’ın asıl amacı datanın doğru olduğunu (model yapısına göre valid mi?) Jquery Validation gibi client-side da kontrol etmek yerine istenirse hem server-side hem client-side (Bunun için yine Jquery validaitondan yardım alır) kontrol edilmesini sağlamaktır. Yani kısaca FluentValidation bir data validaiton kütüphanesidir. Hem client-side validaiton hem backend validaitonın beraber kullanımı veri doğruluğunu garanti etmek adına daha güvenli bir yaklaşımdır.

FluentValidation bu amacıyla beraber, validation kurallarını daha esnek, daha kolay, anlaşılır yazmak ve komplex kuralları belirtmek konusunda diğer alternatif validation kütüphanelerinin önündedir. Bu arada FluentValidation, data annocationslarla beraberde kullanılabilir. Fluent validaiton open-source bir projedir. Github reposunu buradan inceleyebilirsiniz. Ufak bir örnekle FluentValidation kullanımını pekiştirelim.

Image for post
Image for post
unsplash-Erwan-Hesry

Örnek için .net Core 3 Api projesi açtım. Get ve post işlemimiz olacak. Parametre olarak aldığımız player modelde validation kontrolü yaparak, eğer hata yoksa listemize ekleyeceğiz. Aynı şekilde listeye bilerek eklediğimiz validaitona uymayan bir itemıda get isteğinde göndermemeye çalışacağız.

Öncelikle projemize nuget paketimizi ekleyelim.

Configure Servis içerisinde AddControllers().AddFluentValidation() yada AddMvc().AddFluentValidation() adımına ekleyelim. Burada isterseniz gerekli optionları verebilirsiniz. Biz assemblyde validatorlerimizi taramızı için aşağıdaki şekilde kullanacağız.

Sıra geldi validator sınıfımızı yazmaya.

Burada ruleset ile model için farklı kurallar belirleyebilirsiniz. Bu şekilde kullanımı commentli olarak paylaştım. Biz tek kural seti üzerinden gideceğimiz için bu yapıyı kullanmadık. Daha sonra constructor injection kullanacağımız için Validator sınıfımızı ve servisimizi inject ediyoruz.

Injectionu ve paketimizin kurulumunu gerçekleştirdikten sonra _playerValidator.Validate ile validasyonu sağlayailiriz. Farklı ruleset kullanımı için commentli olarak örneği ekledim.

Şimdi apimizi Postman aracılığıyla test edelim.

Post metodumuza bir başarılı bir başarısız request atalım.

Image for post
Image for post
player Api Post Success
Image for post
Image for post
player Api Post Error
Image for post
Image for post
player Api Get

Gördüğünüz gibi validasyonumuza uymayan

kaydını listelemedik.

.Net Core 3 ile modelimizi gönderirken ve alırken validationımızı uygulamış olduk. Umarım faydalı olmuştur.

Kaynak Kod => https://github.com/EnesAys/NetCoreFluentValidation

Kaynaklar

https://docs.fluentvalidation.net/en/latest/aspnet.html

https://www.c-sharpcorner.com/article/using-fluentvalidation-in-asp-net-core/

https://www.bilgeadam.com/blog/yazi/fluent-validation

Software Developer at Sosyopix

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store