Nodejs Notları-3 (Http Server Response Types HTML-JS-JPEG)

6 Şubat 2015
Posted by Çağatay Yıldız
1888 Views

Nodejs notlarımıza response type lar ile devam ediyoruz. Bilindiği gibi HTTP üzerinden isteklerde birden çok dönüş türü bulunmakta. HTTP isteğim bana bir HTML döneceği gibi, server isteğe yanıt olarak text,js,jpeg,png dönebilir. Nodejs ile oluşturacağımız server da bu dönüş tiplerini inceliyor olacağız. Bunun için Fiddler kullanacağız. Öncelikle http server oluşturup ilk olarak bir isteğe bir html ile yanıt vereceğiz. Oluşturduğum html şu şekilde

<html>
	<head>
		<title>Kompozit Studios</title>
        </head>
	<body>
		<p>Hello Kompozit Studios!</p>
	</body>
</html>

Şimdi ise http server ımı oluşturuyorum.


var http = require('http');
var fs = require('fs');
http.createServer(function (request, response) {
    console.log('request starting...');
	
	fs.readFile('./index.html', function(error, content) {
		if (error) {
			response.writeHead(500);
			response.end();
		}
		else {
			response.writeHead(200, { 'Content-Type': 'text/html' });
			response.end(content, 'utf-8');
		}
	});
	
}).listen(8125);
console.log('Server running at http://127.0.0.1:8125/');

Server ımız gelen isteğe 200 koduyla cevap vermektedir. Verdiği cevabın tipi ise “text/html”. Oluşturduğumuz http server da nodejs kütüphanesindeki fs.js javascriptini kullanarak statik html dosyamı readFile metoduyla okuyoryuz ve okuduğum uzdosyayı yanıt olarak kullanıcıya gönderiyoruz.Lokal adresimizin 8125 portundan bir istekte bulunduğumuzda dönüş olarak html gelecek.Browser dan istekte bulunduğumda ekran görüntüm şu şekilde

nodejshtml

Ekrana html çıktım böylelikle gelmiş oldu. Her istekte bulunduğumuzda console a “request starting…” yazmasını istemiştik. Console ekran görüntümüz ise şu şekilde

nodejscommand

Şimdi ise diğer dönüş tiplerine göz atalım. Örneğin server a istek geldiğinde cevap olarak bir jpeg dönmek istersek yazacağımız kod ise şu şekilde

var http = require('http')
 fs = require('fs');

fs.readFile('kompozitstudios.jpg', function(err, data) {
  if (err) throw err; // Fail if the file can't be read.
  http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'image/jpg'});
    res.end(data); // Send the file data to the browser.
  }).listen(8124);
  console.log('Server running at http://localhost:8124/');
});

Burada yine statik html sayfasını okuduğumuz fs.js javascriptini require ettik. Content type ını ise image/jpg olarak değiştiriyoruz. Eğer image uzantınız farklı ise jpg kısmını değiştirmeniz yeterli olacaktır. Server a istek geldiğinde karşılık olarak kompozitstudios.jpg dosyası dönecektir. Fiddler dan server a istek yolladığımda gelen ekran görüntüsü şu şekilde

nodegetjpeg

Fiddler sol üstte image dosyası döndüğü belirtiliyor. Eğer buraya tıklarsanız size bir imageview döndüğünü göreceksiniz. Browser üzerinden talepte bulunduğunuz takdirde de ekranda mevcut jpeg gelecektir.Browser üzerinden talepte bulunduğumuzda ise gelen ekran görüntüsü şu şekilde

nodegetjpegBrowser

Burada dikkat çeken nokta img source olarak mevcut adresimizi göstermesi. Yani server ımıza istekte bulunulduğunda jpeg döneceğini bu noktada da görmüş olduk.
Son olarak dönüş tipini javascript yapıyoruz.

var http = require('http');

http.createServer(function (req, res) {

var JS_Script = 'function Test() { alert("hello Kompozit Studios!")}';

res.setHeader('content-type', 'text/javascript');

res.end(JS_Script);
}).listen(8811);

Js objeme text olarak atadığım js kod bloğumu response sonucu olarak dönüyoruz. Fiddler üzerinden istekte bulunduğumuzda ise gelen ekranımız şu şekilde.

nodegetjs

Böylelikle bir çok dönüş tipini incelemiş olduk. Bu gibi tip ve dönüş kodu yakalamalarımızda Fiddler programını kullanmamız herşeyi daha ayrıntılı görmemizi sağlayacaktır.