Merhaba bir süredir bir blog yazısı ele almamıştım. Özellikle son günlerde kendimi Node JS üzerine geliştirmeye çalışırken henüz bebek adımları atmaya başlamışken öğrendiklerimi hem tekrar etmek hem de yayınlamak için elimden geldiği kadar aktarmaya çalışacağım. Umarım yeni başlayanlar için kaliteli bir rehber ortaya çıkarabilirim :) Haydi gelin başlayalım..
Nedir Bu Node JS?
Özetlemek gerekirse öncesinde Javascript sadece tarayıcıda çalışırken artık günümüz de tarayıcı dışında da kullanabildiğimiz bir dil haline geldi. Bu ortamın adına ise Node JS diyebiliriz. Öncesinde Javascript ile client-side yazılabilirken Node ile artık server-side kodda yazabiliyoruz. Node JS, V8 isimli bir Javascript motoru üzerinde çalışmaktadır. V8, Google tarafından geliştirilen, Chrome web browserlarının da üzerinde çalıştığı C, C++ ve Javascript dilleri ile kodlanan açık kaynak kodlu bir motordur.
Daha detaylı bilgi ve dokümantasyon için bknz;https://nodejs.org/en/about/
NPM Tam olarak ne işimize yarıyor?
NPM adından da anlayabileceğimiz üzere “Node Package Manager” projelerimize 3.parti kütüphaneleri dahil etmek için kullandığımız bir paket yönetim sistemidir. Npm’ i içerisinde birçok modül barındıran bir depo gibi düşünebiliriz. Bu modüller tamamen açık kaynaklı bir şekilde geliştiriciler tarafından npmjs.com üzerine yüklenmektedirler. Projelerimizin ihtiyaçlarına göre biz geliştiricilere sunulmuştur.
Express JS nedir ne işe yarar?
Express.js Node JS tabanlı bir web uygulama sunucusu frameworkudur diyebiliriz. Express JS sayesinde projelerimizde hızlı bir şekilde API’lerimizi oluşturabiliriz. Express.js “MERN” yazılım demetinin’ de aynı zamanda bir parçasıdır. Bknz;(MongoDb, Express.js,React,Node.js ) “GET,POST,DELETE” gibi operasyonlarımızda biz yazılımcılara oldukça kolaylık sağlar. Express JS neredeyse bütün Node.js uygulamalarında aktif bir şekilde görmekteyiz. Projemize nasıl dahil ederiz sorusuna gelecek olursak “npm install express” npm komutu ile projemize dahil edebiliriz. Basit bir örnek vermemiz gerekir ise Express JS ile oluşturduğumuz bir uygulama en basit hali ile şu şekilde örnekleyebiliriz.
Bilgisayarımızın 3000 portunu dinleyen ve localhost:3000 adresine istek yaptığımızda programımızın console ekranına ‘Merhaba Dünya !’ yazdıran bir program yazmış olduk.
Bu noktada Express JS ile işimizin bittiğini söyleyemeyeceğiz çünkü Express aynı zamanda “Router” işlemi yapmamıza da imkan veren bir framework. Aynı şekilde bir örnek üzerinden “/admin” , “/user” isimli 2 adet method yazalım. Örneğimiz ise şu şekilde. Bu adreslere istek yaptığımız taktirde. “response.send()” methodu içerisinde ki mesajlarımızı dönecektir.
Daha detaylı bilgi ve dokümantasyon için bknz; https://expressjs.com/
Middleware nedir? Neden kullanıyoruz?
Klasik web uygulamalarında ilk örneğimiz de de kullandığımız gibi son kullanıcıdan gelen request (taleplere) karşılık response(cevaplar) gönderilmektedir. Gelişmiş bir web uygulamasında ise request ve response ikilisi arasına Middleware dediğimiz yapılar dahil olmaktadır. Örnek vermek gerekirse kullanıcı sisteme giriş yapmak için bir requestte bulunur fakat bir Middleware aracılığıyla gerekli operasyonumuzda kontrollerimizi sağlayabiliriz.
Olayı daha iyi anlamamız açısından bir örnek vermek gerekirse basit bir oturum kontrolü yapmaya çalışalım. Projemizin ana sayfasına bir istek yapalım fakat Middleware sayesinde son kullanıcının sisteme giriş yapıp yapmadığını check etmeye çalışalım. Örnek kodumuz aşağıda ki şekilde;
Burada yaptığımız işlem “app.use” Middlewareimiz sayesinde basit bir if döngüsü kullanarak kullanıcının sistemimize giriş yapıp yapmadığını kontrol ediyoruz. Daha sonrasında giriş yapmamış kullanıcıya “404.html” sayfasını gösteriyoruz sonucumuz ise şu şekilde;
Middlewareimizi istediğimiz bir sayfa üzerinde uygulamak istersek ise yapmamız gerekenler şu şekilde olacaktır. “/user/profile” sayfamızı oluşturalım ve bir üstteki yaptığımız işlemleri bu sayfa için yapılmasını sağlayalım örnek kodumuz aşağıda ki gibi olacaktır.
Dikkat ederseniz app.use içerisine “/user/profile” yolumuzu vermiş olduk artık Middlewareimiz bizim için bu yolu kontrol edecek.
“next()” fonksiyonuna da değinmemiz gerekirse bu fonksiyonu çağırdığımız taktir de ilgili Middeware üzerinde işlemin onaylandığı anlamına gelmektedir. Yukarıda ki örneğimizde olduğu gibi “İsAuthenticated” değişkeni gereken şartları sağlarsa “next()” methodu çalışacaktır. Yani kullanıcı hangi sayfamıza istek gönderirse o sayfa çalışacaktır diyebiliriz.
Bu noktadan sonra ise Middleware katmanımızı ayrı bir modül olarak tasarlayım ve bizim için log tutmasını sağlayalım. Bunun “logger.js” isimli bir dosya yaratalım. “logger.js” dosyasını bizim loglama işlemlerimizi yapan bir Middelware olarak düşünebiliriz. Şu anlık sadece console log atma ile yetiniyor olsa da :) Bu noktada dikkat ederseniz “module.exports” ile Middlewareimizi her yerde kullanabiliyoruz.
Daha sonrasında ise “index.js” içerisinde yapmamız gerekenler şu şekilde;
Logger dosyamızı “require” ile projemize dahil ediyoruz. “app.get” methodumuzun içerisinde parametre olarak geçmemiz yeterli. Bu adrese istek yaptığımızda Logger Middlewareimizi bizim için çalışacak ve console ekranına mesajımızı yazacak..
Umarım anlattığım konuları güzelce özetleyebilmişimdir. Özellikle Node JS yeni keşfediyor olduğum şu günlerde Javascript teknolojileri ile çalışmaktan oldukça keyif aldığımı söyleyebilirim. Yazıyı çok uzatmamak adına bir sonraki yazımda Node JS ile alakalı başlangıçta bilinmesi gereken diğer kavramlardan bahsediyor olacağım bir diğer yazımda görüşmek üzere. Lütfen eksik yerleri bana bildirin :) iyi günler dilerim..