Node.js Validation Kullanımı
Hepinize merhaba dostlarım :). Bu yazımda sizlere node js programlama dilinde yargs modülünün kullanımı sırasında kullanabileceğimiz ve bazı durumlarda da kullanmamızın zorunlu olduğu validation yani zorunlu kılma olaylarından bahsedeceğim. Biliyorsunuz artık hayatımızda hemen hemen her yerde karşımıza çıkan ve en basitinden bir üyelik sisteminde bile karşımıza çıkan bu validation olayları çoğu zaman hayat kurtarıcı oluyor.Heyecanlandığınızı anlıyorum dostlarım. Öncelikle validation nedir gelin ondan bahsedelim :)
Validation Nedir ve Neden Kullanılır ?
Validation yani Türkçe karşılığı doğrulama olan bu yapı kullanıcı tarafından gelen verilerin programcı tarafından bir filtrelemeye alınması ve bu filtreden geçebilmiş ise gerekli işlemlerin yapılması, değilse hata verilmesini sağlama işlemi olarak adlandırılır dostlarım. Biraz teorik bir anlatım gibi oldu ama elimden geldiğince mantıksal anlatmaya çalıştım. Şimdi bir örnek verelim. Örneğin bir kullanıcı kayıt sistemi yapıyorsunuz varsayalım veya login işlemi de olabilir bu. Client (Kullanıcı) tarafından gelen bir verinin bizim belirlediğimiz stabil değerlerimizle (string,integer,valid email vs) gibi şartlarımızla eşleşiyorsa belirli işlemleri yaptırmamız gerektiği, eşleşmiyorsa client tarafına bir uyarı verdirmemiz gerektiği zamanlarda bu validation yapısını rahatlıkla kullanabiliriz. Bu validation kullanımı ise node.js programlama dilinde basit bir kullanımı vardır. Artık kemerleri bağlamışsanız yavaştan yavaştan uçuşa geçebiliriz :)
Node.js Validation Kullanımı ?
Evet artık gelelim validation kullanımına :). Öncelikle dostlarım kısa bir not bırakmak istiyorum. Node js programlama dilinde yargs kullanımını okumayanlarınız varsa buradan yazıma ulaşıp temel mantığı kavramasını ve 3.15.0 sürümünün kurulumunu kavrasın isterim. O kısımdan yargs modülünü kurup ve temel mantığını kavrayıp daha sonra bu yazımı okusun isterim :). Yargs modülünün mantığını oturtmayıp bu yazımla karşılaşan dostlarımın zorluk yaşamasını istemem :).
Kurulumları yapmışsanız dostlarım bir js dosyası oluşturun ve ismine de validation.js ismini verin. Daha sonra aşağıdaki komutlarımızı yazalım
const argv = require('yargs')
.command()
.argv
şeklinde kodumuzu yazdık. Dikkat etmişseniz burada farklı bir obje methodu olan command bizi karşılamış bulundu :). Nedir bu command gelin ona değinelim
Command Methodu Nedir ?
Command methoduna bakacak olursak dostlarım bu bizim projemizi çalıştırırken bir komut belirtmemiz durumunda çalışacak olan alias ları ve onların validattion ları içerisinde barındırır. Örnek olarak:
node validation.js sayikontrol
şeklinde yazdığımız komut üzerinde sayikontrol isimli belirttiğimiz komut projemiz üzerinde ismi sayikonrol isimli komutumuzun çalışmasına olanak sağlayacaktır. Command methodu çalışması için 3 adet parametre alır dostlarım. Bunlar:
- Parametre: Komut İsmi
- Parametre: Komut Açıklaması
- Parametre: Callback Fonksiyon
şeklindedir. Gelelim sözümüzü daha fazla uzatmadan bir command tanımlayalım.
İlk Command'ı Oluşturalım
Evet artık dostlarım artık command ın ne olduğunu anladığımıza göre artık sıra bunu ufaktan ufaktan pratiğe dökme işlemine :). Oluşturduğumuz validation.js dosyasını açalım ve bir komut oluşturalım. Burada kullanıcıdan gelen isim ve soyismi alalım.
const argv = require('yargs')
.command("adsoyad","Kullanıcıdan Gelen Ad Soyadı Alır",function (yargs){
yargs.options({
name : {
demand : true,
description : "İsim",
type : "String",
alias : "n"
},
surname : {
demand: true,
description: "Soyisim",
type: "String",
alias : "s"
}
})
})
.argv
şeklinde kodlarımızı yazdık. Ve sizlerden ufak ufak sesler gelmeye başladığını seziyorum
Hocam çok karmaşıklaştı bu işin mantığı nedir ?
Anlıyorum dostlarım :). Ben de tam bu işin mantığını sizlere anlatacağım. Öncelikle dostlarım command kısmında sizlere demiştim 3 adet parametre alıyor diye. İşte bu 3 parametrenin en sonuncusu olan callback fonksiyonda ise (callback fonksiyonların kullanımını okumayan dostlarım buradan ulaşabilir) bizim yargs modülünde yani bu sayfada kullanacağımız yargs modülünde kullanıcıdan gelecek olan verilerin filtrelenme ve zorunlu kılma işlemlerini yargs.options methodu içerisinde gerçekleştirdik. Bu method içerisine bir obje alıyor ve bu obje içerisinde de kullanıcı tarafından gelecek olan alias ların kontrolü yazılır. Örnek olarak name alias ını ele alalım:
name : {
demand : true,
description : "İsim",
type : "String",
alias : "n"
}
şeklinde kullanıcı tarafından gelecek olan name alias ını ele alalım dostlarım. Burada ise bizi bazı komutlar karşılıyor. Nedir bu komutlar bunları inceleyelim
- demand: Bu komut kullanıcı tarafından alınacak alias ın zorunlu olup olmadığını belirtiyor (true ise zorunlu, false ise zorunlu değil)
- description: Kullanıcı tarafından alınacak olan alias ın açıklamasını tutan bir obje nesnesidir (o alias ın amacı ne ? ne işlev görüyor ? onları tutmamıza yarıyor)
- type: İsminden de anlaşılacağı üzere bu nesne bizim kullanıcı tarafından alacağımız alias ın tipinin hangi veri türünde geleceğini, hangi veri türünde kabul edileceğini tutuyor. Biz yukarıdaki örnekte "string" dedik :). Çünkü bize isim gelecek
- alias: Kullanıcıdan alacağımız alias ın kısa adı olarak tanımlanır dostlarım. Mesela node js ile yeni yeni tanışan, npm üzerinden paket yükleyenleriniz varsa --install komutu ile -i komutunun aynı işlev gördüğünü biliyordur. İşte biz de burada --name ile -n nin aynı işlevi görmesini yani kullanıcıya uzun uzun --name yazdırmaktansa -n yazması ile de işlemleri rahatlıkla gerçekleştirebileceğini sağlamış oluyoruz
şeklinde komutlarımızı belirtiyoruz. Şimdi sizlerin aklına bir güzel soru daha geldiğini seziyorum
Hocam peki bu alias olsun vs olsun bunları kullanıcıya gösteremez miyiz neyin zorunlu olduğunu vs falan ?
Çok ama çok güzel bir soru sorduğunuzu size açıkça söyleyebilirim. Şimdi gelelim bu işlemi nasıl gerçekleştireceğimize
const argv = require('yargs')
.command("adsoyad","Kullanıcıdan Gelen Ad Soyadı Alır",function (yargs){
yargs.options({
name : {
demand : true,
description : "İsim",
type : "String",
alias : "n"
},
surname : {
demand: true,
description: "Soyisim",
type: "String",
alias : "s"
}
}).help("help") // kullanıcı --help yazınca erişebilsin alias ların hangi amaçla alındığına
})
.argv
şeklinde kodda da belirtildiği gibi ufak bir kod yani help() methodunu ekledik ve içerisine "help" parametresini aldı. Gelelim şimdi terminale kullanıcı bunu nasıl kullanacak onu inceleyelim
node validation.js adsoyad --help
şeklinde terminalimize gelip kodumuzu yazdık dostlarım. Bu aşamada biz diyoruz ki: "Kardeşim sen validation.js içerisinde tanımladığımız adsoyad komutunun ne işe yaradığını bizim karşımıza bir getiriver sana zahmet" diyoruz. Ve aşağıdaki gibi bir çıktı bize geliyor
Options:
--name, -n İsim [required]
--surname, -s Soyisim [required]
--help Show help [boolean]
şeklinde bir çıktı karşımıza çıkıyor. Dikkat etmişseniz demand kısımlarını true yaptığımız için ikisi de zorunlu, --name ve --surname komutlarının alias ları ise sırasıyla -n ve -s, Açıklamaları ise İsim ve Soyisim olarak geçiyor :). Sizin aklınıza bir soru daha geldiğini seziyorum. Burada ise soru tamamen şu
Hocam peki biz bu komut haricinde projemizin genel amacını kullanıcıya nasıl gösterebiliriz ?
Çözüm gayet basit dostlarım :). Bunun için de bir help() methodu yazmamız gerekecek. Hemen validation.js dosyamıza gelelim ve kodumuzu yazalım
const argv = require('yargs')
.command("adsoyad","Kullanıcıdan Gelen Ad Soyadı Alır",function (yargs){
yargs.options({
name : {
demand : true,
description : "İsim",
type : "String",
alias : "n"
},
surname : {
demand: true,
description: "Soyisim",
type: "String",
alias : "s"
}
}).help("help")
}).help("help") // proje hakkında genel bilgi için bu komutumuzu yazmış bulunduk
.argv
şeklinde belirtildiği gibi methodumuzu yazdık. Şimdi ise gelelim terminalimize ve aşağıdaki komutumuzu yazalım
node validation.js --help
komutumuzu yazalım. Komutumuzu yazdıktan sonra enter tuşuna basar basmaz bize aşağıdaki gibi bir sonuç gelecektir
Commands:
adsoyad Kullanıcıdan Gelen Ad Soyadı Alır
Options:
--help Show help [boolean]
şeklinde bizim ekranımıza bir çıktı gelir dostlarım. Artık komut oluşturma işlemini anladığımıza göre gelelim bu komutu kullanma işlemlerine
Command Kullanımı
Eveeeet :). Artık komut oluşturma işlemlerini kavradığınızı ve buraya kadar bir sorun olmadığını düşünüyorum. Şimdi ise gelelim oluşturduğumuz komutu nasıl kullanırız bunu inceleyelim. Öncelikle terminali açalım ve yukarıda oluşturduğumuz komutumuzun ismini yazalım.
node validation.js adsoyad
Oluşturduğumuz komutu kullanmamız bu şekildedir :). Öncelikle node js ile çalıştığımız için node komutu, daha sonra bizim dosyamızın ismi yani validation.js, daha sonra da komutumuzun ismi olan adsoyad (artık komutumuzun ismi neyse o adsoyad yazarsanız size hata verir :)). Şimdi bu halde hiçbir alias göndermeden direk enter tuşuna basalım. Bize aşağıdaki gibi çıktı verecektir
Options:
--name, -n İsim [required]
--surname, -s Soyisim [required]
--help Show help [boolean]
Missing required arguments: name, surname
şeklinde bir sonuç ekranımıza gelecektir. Burada ise bize dönen hata name ve surname alanlarının gerekli olduğu ve bu parametrelerin değerlerinin boş geldiği, bizden bunların beklendiği söyleniyor. Biz de tabi hata vermesin tekrar diye parametreleri gönderelim şimdi
node validation.js adsoyad --name MFSoftware
şeklinde komutumuzu yazdık dostlarım bu sefer de surname kısmını boş bıraktık. Ekranımıza gelecek hata bu sefer
Options:
--name, -n İsim [required]
--surname, -s Soyisim [required]
--help Show help [boolean]
Missing required arguments: surname
şeklindedir dostlarım. Burada da diyor ki "Kardeşim iyi güzel sen name değerini gönderdin ama surname kısmını boş bıraktın :)". Biz de bu sefer ikisini de doldurup o şekilde gönderelim ama bu sefer de alias kullanımı yaparak gönderme işlemi yapalım yani uzun uzun --name, --surname kullanmayalım. Hemen terminale aşağıdaki komutumuzu yazalım
node validation.js adsoyad -n MFSoftware -s Blog
komutumuzu yazalım. Enter tuşuna bastığımızda hiçbir şey ekranımıza çıkkmayacaktır. Çünkü komutumuzla ilgili herhangi bir işlem yaptırmıyoruz. Gelelim şimdi bir örnek yapalım. Gönderdiğimiz değerlerle ilgili ekrana selamlama fonksiyonu yazdıralım :)
const argv = require('yargs')
.command("adsoyad","Kullanıcıdan Gelen Ad Soyadı Alır",function (yargs){
yargs.options({
name : {
demand : true,
description : "İsim",
type : "String",
alias : "n"
},
surname : {
demand: true,
description: "Soyisim",
type: "String",
alias : "s"
}
}).help("help")
}).help("help")
.argv
function selamla(name,surname){
console.log("Merhaba: "+name+" "+surname) // gelen parametreleri ekrana yaz
}
const command = argv._[0] // komutumuzu aldık
if (command == "adsoyad"){ // komutumuzun ismi adsoyad ise
if (typeof argv.name !== "undefined" && typeof argv.surname !== "undefined"){ // değerler gelmişse
selamla(argv.name,argv.surname) // fonksiyonu çalıştır
}
}
şeklinde kodlarımızı yazdık. Şimdi gelelim terminalimizi açalım ve
node validation.js adsoyad -n MFSoftware -s Blog
komutumuzu yazalım. Komutumuzu yazıp enter tuşuna bastığımızda is karşımıza çıkacak sonuç
Merhaba: MFSoftware Blog
şeklindedir :). İşte yargs modülü ile validation işlemleri bu kadar :)
Evet dostlarım :). Bu yazımda sizlere validation nedir, neden kullanılır, command oluşturma ve kullanma gibi konulardan dilim döndüğünce bahsettim. Umrım faydalı olmuşumdur, aklınızda soru işareti kalmamıştır. Eksik veya anlam karmaşası olan yerler varsa bana iletişim kısmından ulaşabilirsiniz. Konu başlarda biraz zor gelebilir anlıyorum ben de zorlanmıştım ilk zamanlarda. Bunun için her yazımın altında dediğim gibi "İstikrarlı ve Azimli Çalışmalısınız, Bolca Pratik Yapmalısınız". Bu dediklerim hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır :).
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer