ASP.NET CORE'da FluentValidation Kullanımı

ASP.NET CORE'da FluentValidation Kullanımı

Merhaba;

Bu yazımda sizlere ASP.NET CORE'da Fluent Validation kullanımından bahsedeceğim. Öncelikle Fluent Validation nedir biraz ondan bahsedelim.

Fluent Validation Nedir?

Fluent Validation nesnelerinizin içerisinde bulunan property'lerin durumlarını kontrol etmek amacıyla kullanılan bir kütüphanedir.
Kullanımı "Data Annotation'a" göre daha zahmetli olsa da, genellikle daha okunaklı ve düzenli kod yazabilmek için kullanılır.

Kurulum

Kurulum için Visual Studio'da Nuget Package Manager veya Package Manager Console kullanılabilir.

Fluent Validation in Nuget Package Manager

Install-Package FluentValidation

 

Kurulumu tamamladığımıza göre artık kodlamaya geçebiliriz.
Öncelikle Program.cs içerisine Fluent Validation'u ekleyelim.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews().AddFluentValidation();

Eğer FluentValidation'u kullancağımız yer, solution içerisinde farklı bir assembly içerisindeyse, ek bir ayar yapmamız gerekiyor.
Örneğin; farklı bir katmanda kullanıyorsanız;

builder.Services.AddControllersWithViews().AddFluentValidation(x => x.RegisterValidatorsFromAssemblyContaining<SomeClass>());

 

Önce FluentValidator kullanmak için bir class oluşturalım;

public class Musteri
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Email{ get; set; }
        public int Age { get; set; }
    }

Class'ımız hazır olduğuna göre artık kurallarımızı yazabiliriz.
Kurallarımızı yazabileceğimiz yeni bir class oluşturup, AbstractValidator sınıfından implement etmeliyiz.
Daha sonra bir constructor oluşturup kurallarımızı yazalım.

Kullanacağımız kuralları inceleyelim;
Property'nin boş gelmemesi için NotNull ve NotEmpty. İkisini de aynı anda kullanmamızda bir sakınca yoktur.
Minimum ve maksimum karakter sayısını belirlemek için MinimumLength ve MaximumLength.
Nümerik bir ifadenin en düşük ve en yüksek seviyelerini belirlemek için InclusiveBetween.
Email adresi belirtmek için EmailAddress.

public class MusteriValidator:AbstractValidator
    {
        public MusteriValidator()
        {
            RuleFor(x => x.Id)
                 .NotNull().WithMessage("{PropertyName} girilmesi zorunludur")
                 .NotEmpty().WithMessage("{PropertyName} girilmesi zorunludur");
            RuleFor(x => x.Name)
                 .MinimumLength(5).WithMessage("{PropertyName} en az 5 karakter olmalı")
                 .MaximumLength(20).WithMessage("{PropertyName} en az 20 karakter olmalı");
            RuleFor(x => x.Email)
                 .EmailAddress().WithMessage("{PropertyName} geçerli bir email adresi değil");
            RuleFor(x => x.Age)
                 .InclusiveBetween(18, int.MaxValue).WithMessage("{PropertyName} 18 den büyük olmalı");
        }
    }

Kurallarımızı yazdık. Şimdi Controller'da bir örnek endpoint oluşturup test edelim.
Postman üzerinden testimizi yaparken kullandığım veri;

{
    "Name": "İsmet",
    "Email": "deneme",
    "Age": 1
}

Sonuç;
Fluent Validation Sonuç

Görüldüğü üzere gönderdiğimiz veride Id yoktu uyarıyı aldık. Age verisini 1 girdik ve yine uyarısını aldık. Email için de aynı durum geçerliydi.
Name property bizden en az 5 karakterli bir veri beklediği için bununla ilgili bir uyarı gelmedi.
Testimiz başarıyla tamamlandı!

Bugün FluentValidation hakkında kısa bir bilgilendirme ve test işlemi gerçekleştirdik.
Sabırla okuduğunuz için teşekkür eder, bol kodlu günler dilerim 🤩

Kategoriler