Node JS Eğitimi – 07 (Derinlemesine HTTP Sunucu)

Bir önceki eğitimimizde HTTP Sunucu konusundan bahsetmiştik. Bir HTTP sunucu oluşturarak bu sunucu üzerinde request ve response işlemlerini incelemiştik. Node JS eğitimimize Derinlemesine HTTP Sunucu konu başlığıyla devam edelim. Bu konuda gelen request leri biraz daha derinlemesine inceleyerek response işlemlerini ona göre şekillendirmeye çalışacağız.

Derinlemesine HTTP Sunucu

Sunucumuza ait olmayan bir sayfanın veya dosyanın talep edildiğini varsayalım. Bu talep karşılanamayacağı için biz bunu istek aşamasında tespit edip cevap olarak böyle bir sayfanın bulunmadığını bildirmemiz gerekir. Buna cevap olarak “Aradığınız Sayfa Bulunamadı!” gibi bir cevap verebiliriz. Ayrıca bizden var olan bir dosya talebi olduğunda bu dosyayı stream ederek karşı tarafa iletmemiz gerekir. Bu işlemleri nasıl yapacağımızı görelim.

Önceki dersimizde oluşturduğumuz uygulamamız üzerinde değişiklikler yaparak devam edelim. Öncelikle dosya sistemine erişebilmek için kodumuzun üst kısmında tanımlama yapmamız gerekmektedir.


var fs = require('fs');

Daha sonra varsa projemizde veya javascript dosyamızla aynı dizinde babasayfa.html adında bir dosya oluşturalım ve içine aşağıdaki tanımlamaları yapalım.

<html>
<head>
 <title>Baba Sayfa</title>
</head>
<body>
 Baba sayfaya hoşgeldiniz.
</body>
</html>

Kodumuzu aşağıdaki gibi düzenleyelim.


var http = require('http');
var fs = require('fs');
function fonksiyon(request, response)
{
 if (request.url == "/")
 {
 response.writeHeader(200, { "Context-Type": "text-plain" });
 response.write("<html><head><meta charset=\"utf - 8\" /><title>Fatih YILMAZ</title></head><body><p>Erzincan 24</p></body></html>");
 response.end();
 }
 else if (request.url == "/babasayfa")
 {
 response.writeHeader(200, { "Context-Type": "text-plain" });
 fs.createReadStream('babasayfa.html').pipe(response);
 }
 else
 {
 response.writeHeader(404, { "Context-Type": "text-plain" });
 response.write("<html><head><meta charset=\"utf - 8\" /><title>404</title></head><body><p>Page Not Found</p></body></html>");
 response.end();
 }
}
http.createServer(fonksiyon).listen(9999);
console.log("Sunucu çalıştı...");

Daha önceki dersimizde fonksiyon isimli fonksiyonumuzla request ve response nesnelerini yönetmiştik. Fakat sadece tek bir cevap döndürmüştük. Bu sefer  if / else if / else yapısı kullandık. Ve bu yapı yardımıyla farklı URL isteklerine farklı cevaplar vermeyi amaçladık.

İlk durumda (if) tanımladığımız “/” ifadesi projemizin ana dizini yani 127.0.0.1:9999/ adresine denk gelmektedir. Bu durumda isteğe cevap olarak önceki yazımızda verdiğimiz Fatih YILMAZ ve Erzincan 24 cevabını verdik.

İkinci durumda (else if) tanımladığımız “/babasayfa” ifadesi 127.0.0.1:9999/babasayfa talebi geldiğince çalışacak durumdur. Bu durumda daha önceden hazırlamış olduğumuz babasayfa.html sayfasını stream ederek cevap olarak döndürdük.

Son durumda (else) ise yukarıdaki iki istek dışında kalan tüm isteklere 404 (http sayfa bulunamadı kodu) koduyla Page Not Found mesajıyla cevap verdik.


   	

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir