[NODE JS] http.createServer ile Ilk Web Sunucunuz
Merhaba arkadaslar, bugun heyecan verici bir konuya basliiyoruz: Node.js ile web sunucusu olusturma! http.createServer, Node.js'in yerlesik HTTP modulundeki fonksiyonlardan biri ve herhangi bir ucuncu parti kutuphane olmadan tam calisir bir web sunucusu olusturmanizi saglar. Ben ilk web sunucumu yazdigimda ekranda "Merhaba Dunya" gordugumde gercekten heyecanlanmistim. O duyguyu hala hatirliyorum.
Ilk Sunucumuzu Yazalim
Node.js'te web sunucusu yazmak surpriz derecede basit. http modulunu require edin, createServer ile bir sunucu olusturun, listen ile bir porta baglayin ve istek geldiginde ne yapacaginizi tanimlayan. Express.js gibi framework'ler de temelde bunu yapiyor, sadece uzerine abstraction ekliyorlar. Bu yuzden alttaki mekanizmayi anlamak cok onemli.
createServer fonksiyonu bir callback alir. Bu callback her HTTP istegi geldiginde cagrilir ve iki parametre alir: request (istek, genelde req) ve response (cevap, genelde res). Request nesnesinden gelen istegin detaylarini okursunuz, response nesnesine de cevabi yazarsiniz.
JavaScript:
const http = require('http');
// En basit sunucu
const sunucu = http.createServer((req, res) => {
// Cevap basliklarini ayarla
res.writeHead(200, {
'Content-Type': 'text/plain; charset=utf-8'
});
// Cevap govdesini yaz ve baglentiyi kapat
res.end('Merhaba Dunya! Bu benim ilk Node.js sunucum.');
});
// Sunucuyu baslat
const PORT = 3000;
sunucu.listen(PORT, () => {
console.log(`Sunucu http://localhost:${PORT} adresinde calisiyor`);
});
// Sunucu event'leri
sunucu.on('error', (err) => {
if (err.code === 'EADDRINUSE') {
console.error(`Port ${PORT} zaten kullaniliyor!`);
} else {
console.error('Sunucu hatasi:', err.message);
}
});
sunucu.on('close', () => {
console.log('Sunucu kapatildi');
});
// Graceful shutdown
process.on('SIGINT', () => {
console.log('\nSunucu kapatiliyor...');
sunucu.close(() => {
console.log('Tum baglantilar kapatildi');
process.exit(0);
});
});
Request ve Response Nesneleri
Request nesnesinden istegin metodunu (GET, POST), URL'ini, basliklarini ve body verisini okuyabilirsiniz. Response nesnesine ise status kodu, basliklar ve cevap govdesini yazabilirsiniz. Bu ikisini dogru kullanmak, web sunucusu yazmanin temelidir.
JavaScript:
const http = require('http');
const url = require('url');
const sunucu = http.createServer((req, res) => {
// Istek bilgileri
const parsedUrl = url.parse(req.url, true);
const yol = parsedUrl.pathname;
const metod = req.method;
const basliklar = req.headers;
console.log(`${metod} ${yol}`);
console.log('User-Agent:', basliklar['user-agent']);
// Basit yonlendirme (routing)
if (yol === '/' && metod === 'GET') {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(`
<h1>Ana Sayfa</h1>
<p>Hosgeldiniz!</p>
<ul>
<li><a href="/hakkinda">Hakkinda</a></li>
<li><a href="/api/bilgi">API Bilgisi</a></li>
</ul>
`);
}
else if (yol === '/hakkinda' && metod === 'GET') {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end('<h1>Hakkinda Sayfasi</h1><p>Node.js Egitim Sunucusu</p>');
}
else if (yol === '/api/bilgi' && metod === 'GET') {
const bilgi = {
uygulama: 'Node.js Sunucu',
versiyon: '1.0.0',
nodeVersiyon: process.version,
platform: process.platform,
bellek: process.memoryUsage(),
calisma: process.uptime().toFixed(0) + ' saniye'
};
res.writeHead(200, {
'Content-Type': 'application/json; charset=utf-8',
'X-Powered-By': 'Node.js'
});
res.end(JSON.stringify(bilgi, null, 2));
}
else {
res.writeHead(404, { 'Content-Type': 'text/html; charset=utf-8' });
res.end('<h1>404 - Sayfa Bulunamadi</h1><p><a href="/">Ana Sayfaya Don</a></p>');
}
});
sunucu.listen(3000, () => {
console.log('Sunucu http://localhost:3000 adresinde calisiyor');
});
Dikkat Edilmesi Gerekenler
http.createServer ile sunucu yazarken birkac onemli noktaya dikkat edin. Her istekte res.end() cagirmayi unutmayin, aksi takdirde baglanti acik kalir ve client sonsuza kadar bekler. Content-Type basligini dogru ayarlayin, yoksa tarayici icerigi dogru gosteremez. Production'da dogrudan http.createServer kullanmak yerine Express.js gibi bir framework kullanmanizi oneririm cunku routing, middleware, hata yonetimi gibi bir cok seyi sizin icin halleder.
Ben gercek projelerde Express kullaniyorum ama her Express gelisitiricisinin alttaki http modulunu anlamasi gerektigine inaniyorum. Sorun cikardiginda kaputun altina bakabilmeniz lazim. Bir sonraki konuda HTTP metodlarini detayli inceleyecegiz!
Emeğiniz ve katkınız için teşekkür ederiz!
Konunuz gerekli incelemelerden geçerek onaylandı. Topluluğumuza katkılarınızın devamını bekliyoruz.
İyi forumlar!
Konunuz gerekli incelemelerden geçerek onaylandı. Topluluğumuza katkılarınızın devamını bekliyoruz.
İyi forumlar!

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 1
- Görüntüleme
- 36
- Cevaplar
- 9
- Görüntüleme
- 231
- Cevaplar
- 2
- Görüntüleme
- 48
- Cevaplar
- 0
- Görüntüleme
- 117