Herkese merhaba bugünlerde devam eden Java — React Kampı (bknz:kodlama.io) son hızıyla devam ediyor. Açıkçası bu kampın bana C# kampından sonra oldukça farklı bir bakış açısı kattığını söyleyebilirim. Spring Bootun farklı kullanımlarını görmüş oluyorum. Bugün konumuz da aslında o konulardan birisi daha “Validation” yani Doğrulama.
Validation yapısını C#’da “Fluent Validation” gibi paketler ile “LINQ” yardımı ile gerçekleştiriyorduk. Özellikle kendi Validation sınıflarımızı yazarken de “Fluent Valdiation” biz yazılımcıların hayatını kurtarıyordu. Spring Boot’da bu iş açıkçası daha kolaylaşmış “Annotation” veya C#’ da ki adıyla “Attribute” yapısı ile bu işi “Entities” varlıklarımızın üzerinde yapıyoruz. Lafı fazla uzatmadan isterseniz “Java Bean Validation” nasıl kurulacağını ve projemizde nasıl kullanacağımıza geçelim.
Öncelikle bu adres; https://www.baeldung.com/javax-validation üzerinden gerekli “Dependencies” alanlarımızı projemiz de “pom.xml” dosyamıza ekleyelim. 3 Adet bağımlılık ekleyeceğiz. IntelliJ IDEA kullanıyorsanız . Projemizin üstüne sağ tıklayıp Maven >Reload Project diyebiliriz bağımlılıklarımızı bu şekilde projemize indirmiş olacağız.
Ekleyeceğimiz bağımlılıklarımız ise şu şekilde.
Bundan sonra ise aslında işimiz oldukça basit “Entities” tablosuna gidip varlıklarımıza “Annotation” yardımı ile istediğimiz Validation kurallarını yazabiliriz.
Nasıl kullanılacağı ile alakalı bu bilgilerden yararlanabilirsiniz. Detaylı bilgi edinmek isterseniz internette tonla kaynak bulabilirsiniz efenim.
@NotEmpty -> İlgili alanın null ve empty değerinde olmamasını sağlar.
@NotNull -> İlgili alanın null değerinde olmamasını sağlar.
@NotBlank -> İlgili alanın null ve empty değerinde olmamasını sağlar. Boş karakter olması boş empty anlamına gelir.
@Null -> İlgili alanın null değer olmasını sağlar.
@Max -> İlgili alanın girilen değerden küçük veya eşit olmasını sağlar(BigDecimal, byte, short, int, long)
@Min -> ilgili alanın girilen değerden büyük veya eşit olmasını sağlar(BigDecimal, byte, short, int, long)
@DecimalMin -> @Min anotasyonunun yaptığı işi yapar. Farkı, ilgili değerin String karşılığını alır ve ORM(hibernate) ile kullanımında metadata’ya etki etmez.
@DecimalMax -> @Max anotasyonunun yaptığı işi yapar. Farkı, ilgili değerin String karşılığını alır ve ORM(hibernate) ile kullanımında metadata’ya etki etmez. Ayrıca inclusive özelliği ile eşitlik koşulunu kaldırabiliriz.
@Future -> ilgili alanın gelecekte olmasını sağlar(Date, Time)
@Past -> ilgili alanın geçmişte olmasını sağlar(Date, Time)
@Size -> İlgili alanın size’ının verilen aralıkta olmasını sağlar. Null değerler valid kabul edilir.
@Pattern -> Regex kullanarak kısıt oluşturabiliriz. Null değerler valid kabul edilir.
Evet buraya kadar bir problem yok ise verdiğimiz değerlerin hangi Controllerımız da kullanılacağını belirlememiz gerekli buda çok basit.
“add” isimli methodumuzun içerisinde “@Valid” anotasyonumuzu parametre olarak eklememiz gerekli aksi taktir de “Validation” çalışmayacaktır. Son olarak ise Postman yardımı ile bu Apimizi test edelim. Yazının üst kısmında “firstName” alanımızı “@NotEmpyt” ve “@NotBlank” olarak işaretlemiştik. Ayrıca “First name cannot be empty!” diye bir mesaj da göndermiştik.
Apimiz bu adrese istek yapacak; http://localhost:8080/api/users/addusers
Bu kısımda “firstName” alanızı boş bırakıyoruz gördüğünüz gibi ve mesajımızı aldık. “Validation” sınıfımız doğru bir şekilde çalışıyor.
Umarım yararlı bir yazı olmuştur. Tarık şurası eksik, burası şöyle olsaydı daha güzel olurdu dediğiniz yerleri lütfen bana bildirin bu projenin kodlarına da buradan; https://github.com/TarikSogukpinar/HrmsProject ulaşabilirsiniz. İyi çalışmalar herkese..