Node.js Validation Kullanımı

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:

  1. Parametre:  Komut İsmi
  2. Parametre: Komut Açıklaması
  3. 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 :) 

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıJavascript Callback Fonksiyon Kullanımı
Sonraki YazıLaravel Nedir ?
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz