garen.yöndem launching ...3 ...2 ...1

NodeJS HTTP Server

27. Aralık 2017 09:00by Garen Yöndem

NodeJS ile HTTP server oluşturmak için http modülünü kullanmalısınız. Http modülü NodeJS runtime paketine dahil olduğu için harici package’lar kullanmaya gerek olmadan kısa sürede server’ımızı ayağa kaldırabiliriz.


Http modülünü kullanmak için öncellikle require() function’ı ile modülü eklemeliyiz. Http objesinin server oluşturmak için createServer function’ı bulunuyor. Bu function parametre olarak bizim handler function’ımızı alıp oluşturduğu server objesine ekledikten sonra server objesini dönüyor.


Server objesini oluşturduktan sonra, server’ın gelecek http call’ları dinleyeceği port’u belirtmeliyiz. Bunun için listen function’ınını kullanacağız. Listen function’ına daha önce tanımladığımız port değişkeni ile beraber bir de callback function’ı parametre olarak geçiyoruz. Böylece server tanımladığımız port ile çalışmaya başladığında son durumu ile ilgili bilgi sahibi olacağız.


Port bilgisini command line argument olarak verebilir veya default değer belirleyebilirsiniz. Argument vermek için macOS’de PORT=4545 node server komutuyla çalıştırmalısınız. Windows’da ise server’ı başlatmadan önce set PORT=4545 komutunu girmeniz ve enter’a basmanız yeterli. Böylece server’ı dilediğiniz port’ta çalıştırabilirsiniz. Port argument’ını vermediğinizde ise server otomatik olarak 8080 port’unda başlayacak.


Server’ı çalıştırmak için CTRL+” kısa yolu ile VS Code’un integrated terminal’ini kullanabiliriz. Her şey yolunda gittiğinde terminal’de aşağıdaki sonucu görmeliyiz.


NodeJS HTTP Server - garen.yondem.com


Eğer hata alırsanız, tanımladığımız port numarasının bilgisayarınızdaki farklı bir program tarafından kullanılmadığından ve Node versiyonunuzun 5’ten yüksek olduğundan emin olmanızda fayda var.


Server hazır olduğuna göre, ufak bir demo yapmanın zamanı geldi. Yapacağımız demo’da URL parametresi olarak gelecek isim ve soyisim değerlerine ulaştıktan sonra bu değerleri kullanarak requestHandler function’ında response dönmeye çalışalım.


URL parametreleri mevcut URL’in sonunda ‘?’ işaretini takip eden key = value değerler olarak eklenir ve ‘&’ işaretiyle birbirlerinden ayrılılar. Örneğimiz için http://localhost:8080/?name={isim}&surname={soyisim} URL’ini kullanarak name ve surname adında key’ler kullanacağız.


Harici modül kullanmadığımız için query parametrelerini ayrıştırma işini biz yapmalıyız. Bunun için server’ımıza ulaşan URL’i parçalara bölüp key ve value’leri javascript objesi haline getirecek function’a ihtiyacımız var.


GetQueryParams function’ı gelen URL parametresini bir dizi string bölme işleminden geçirdikten sonra uygun key, value eşleştirmelerini yapıp queryParams adındaki javascript objesi dönüyor.


Handler function’ımızda yukarıdaki function’ı kullanarak ulaşacağımız isim ve soyisim değerlerini response olarak dönmek için function’ın aşağıdaki gibi değiştirmeliyiz.


Şimdiye kadar bahsetmediğimiz ancak kodda gördüğünüz favicon.ico kontrolü nedir diye merak ediyorsunuzdur. Favicon’lar tarayıcıların sekmelerde web sayfalarının logolarını göstermeleri için kullanılıyor. Web server’ımızı tarayıcıda test ettiğimiz için tarayıcı bizden favicon talep ediyor. Fakat şimdilik dönebileceğimiz favicon resmi bulunmadığı için bu isteği handle ederek boş response dönüyoruz.


Server’ı tekrar başlattıktan sonra tarayıcıdan name ve surname URL parametreleri ile ulaştığımızda aşağıdaki karşılama mesajını görmeliyiz.


NodeJS HTTP Server - garen.yondem.com


Server.js'in son haline buradan ulaşabilirsiniz.


Sıradaki yazıda Express Web Framework’ü kullanarak, bu yazıda bahsettiğimiz işlemleri daha az kod yazarak hayata geçireceğiz.


2018'de görüşmek üzere. Mutlu yıllar!

blog comments powered by Disqus