4. Node.js Web Module

Web module anlatmadan önce web sunucusu ve web uygulama mimarisi hakkında bilgi verelim. Web tasarımı ve programlama dersini alan öğrencilerim bu kısmı bilirler. Bu konu hakkında daha geniş bilgi için ders slaytlarıma (özellikle 1. Hafta) bakabilirsiniz. 

Web Ortamı

Bir web sunucusu web tarayıcısı gibi bir HTTP istemcisinden gelen HTTP isteğini alıp istemciye cevap olarak web sayfası (HTML dökümanı, resimler, stil dosyaları, javascript kodları) döndüren bir yazılımdır. Bunların günümüzde en çok kullanılanları Apache HTTP Server, IIS (Internet Information Server) ve Nginx olarak gösterilebilir. Ayrıca, çoğu web sunucusu PHP, ASP.NET, Phyton, Ruby, JSP gibi dillerin sunucu taraflı scriptlerini destekler. Bu script’ler sayesinde veritabanında bilgi almak ve sunucu tarafında işlem yapmak mümkün hale gelir. Bu script’ler üretilen sonuçlar yine bir web sayfası şeklinde istemciye gönderilir. Dikkat edildiyse web sunucuları ve sunucu taraflı diller ayrı ayrı mekanizmalardır. Ancak, Node.js bu alışılmış düzeni değiştirdi. Node.js hem sunucu hem de sunucu taraflı bir script dili olarak düşünülebilir. Şimdi Node.js ortamında basit bir sunucu oluşturalım.

Bir Node.js Sunucusu

Node.js üç modül koda eklenmiştir. “http” modülü sunucu oluşturmak için, “fs” modülü dosya okumak için ve “url” modülü gelen url’yi çözümlemek için metotlar içerir. Http modülündeki createServer metodu ile sunucu oluşturulur ve listen ile de sunucu gelen istekleri dinler. Listen bölümüne hangi portun dinleneceği bilgisi yazilir. createServer metodu response ve request olmak üzere iki parametre içerir. request içinde url bilgisi vardır. URL modülündeki parse metodu ile IP adresi veya web adresi gibi çıkarılıp yol bilgisi elde edilir. fs modülündeki readFile metodu ile url’den alınan yol bilgisi kullanılarak dosya okunur. Eğer dosya okuması başarılı ile yapılırsa response’a eklenir. Ayrıca, bu bilgi eklenmeden önce response head kısmı eklenmelidir. (200 sayfa bulundu anlamına gelir.) Browser’ınızı açıp “http://127.0.0.1:8081/” yazın ve sayfayı bekleyin.

Node.js ile İstemci Yapma

Node.js ile istemci yapabildiğiniz gibi bir sunucudan veri çeken bir kodda yazabilirsiniz. Bir anlamda bir web tarayıcısının en temel veri alma işlevini yapalım.

Options ve callback bölümleri http.request metodu tarafından kullanılacaktır. Options bölümünde istenilecek web sayfası ile ilgili bilgiler vardır. callback fonksiyonu istenen veriyi almaya başlar. Ama istenen veri birden fazla paket içinde gelebilir. O yüzden “data” olayı veri geldikçe çalışır ve body kısmına sonuçları toplar (TCP’nin çalışmasını hatırlayalım). “end” olayı transfer bittiğinde aktive olur. Burada sonuçlar konsol ekranına yazdırılmıştır. http.request ile bir http isteği oluşturulur. options ve callback bölümlerine göre bu metot çalışır. http istemi tamamlandıktan sonra req.end() ile istem bitirilir (http ve tcp konularını hatırlayalım).