Yükleniyor...

HTTP Sunucusu Oluşturma

Node.js ile HTTP sunucusu oluşturma, modern web uygulamaları ve API geliştirme süreçlerinin temel taşlarından biridir. Node.js’in olay odaklı ve bloklamayan (non-blocking) yapısı, aynı anda binlerce isteği yüksek performansla işleyebilmenizi sağlar. Bir HTTP sunucusu, istemcilerden gelen HTTP isteklerini karşılar ve uygun HTTP yanıtlarını döndürür. Bu süreç, özellikle RESTful API’ler, tek sayfa uygulamalar (SPA) ve mikroservis mimarilerinde kritik öneme sahiptir.
HTTP sunucusu oluştururken, Node.js’in temel kavramlarını anlamak gerekir: doğru sözdizimi (syntax), verimli veri yapıları (data structures), algoritmalar ve nesne yönelimli programlama (OOP) prensipleri. Bu beceriler, ölçeklenebilir, sürdürülebilir ve performanslı sunucular geliştirmek için gereklidir. Bu eğitimde, basit bir HTTP sunucusundan başlayarak, daha karmaşık yönlendirme (routing) ve hata yönetimi tekniklerini öğreneceksiniz. Ayrıca, Node.js’in yerleşik modüllerini kullanarak sunucularınızı optimize etme, güvenliğini sağlama ve gerçek dünya projelerine entegre etme yöntemlerini keşfedeceksiniz.
Katılımcılar, bu içerik sonunda bağımsız çalışan bir HTTP sunucusu oluşturmayı, farklı istemci isteklerini doğru şekilde yönetmeyi ve sunucu tarafında hataları etkili şekilde ele almayı öğrenmiş olacak. Bu bilgiler, yazılım mimarisi ve sistem tasarımı bağlamında, Node.js ile yüksek kaliteli backend geliştirme yetkinliği kazandırır.

Temel Örnek

text
TEXT Code
const http = require('http');

const PORT = 3000;

const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Node.js HTTP Sunucusuna Hoşgeldiniz!\n');
});

server.listen(PORT, () => {
console.log(`Sunucu çalışıyor: http://localhost:${PORT}`);
});

Bu temel örnekte, Node.js’in http modülü kullanılarak basit bir sunucu oluşturulmuştur. PORT değişkeni sunucunun dinleyeceği portu belirtir. createServer fonksiyonu, her HTTP isteğinde tetiklenen bir callback alır; req istemci isteğini, res ise sunucu yanıtını temsil eder. writeHead metodu HTTP durum kodunu ve başlıkları belirlerken, res.end yanıtı gönderir ve bağlantıyı kapatır.
Bu örnek, Node.js’in event-driven yapısını ve non-blocking mimarisini göstermektedir; sunucu aynı anda birden fazla isteği etkin şekilde işleyebilir. res.end çağrısının ihmal edilmemesi, bellek sızıntılarını ve bağlantı problemlerini önler. Bu temel yapı, ileri düzey özellikler, yönlendirme ve API entegrasyonları için temel oluşturur.

Pratik Örnek

text
TEXT Code
const http = require('http');
const url = require('url');

const PORT = 4000;

const routes = {
'/': (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Ana Sayfa\n');
},
'/api/data': (req, res) => {
const data = { message: 'Node.js API Verisi' };
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data));
},
'/about': (req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Proje Hakkında\n');
}
};

const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true);
const routeHandler = routes[parsedUrl.pathname];

if (routeHandler) {
try {
routeHandler(req, res);
} catch (error) {
res.writeHead(500, { 'Content-Type': 'text/plain' });
res.end('Sunucu Hatası');
console.error('Sunucu hatası:', error);
}
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Sayfa Bulunamadı');
}

});

server.listen(PORT, () => {
console.log(`Pratik sunucu çalışıyor: http://localhost:${PORT}`);
});

Pratik örnekte, routes nesnesi ile URL yolları işlevlerle eşleştirilmiştir. url.parse ile gelen isteğin yolu ayrıştırılır ve uygun fonksiyon çalıştırılır. try/catch kullanımı, hataların güvenli şekilde yakalanmasını sağlar. Yanıtlar hem metin hem de JSON formatında gönderilebilir; bu sayede API geliştirme ve web sayfası sunma işlemleri yapılabilir.
Bu yapının OOP prensipleriyle genişletilmesi, sunucu kodunun daha sürdürülebilir ve modüler olmasını sağlar. writeHead ve res.end metodlarının doğru kullanımı kaynak kullanımını optimize eder ve bellek sızıntılarını önler. Bu sunucu, statik dosya servisi, kimlik doğrulama ve veritabanı bağlantıları gibi ileri düzey işlevleri destekleyecek şekilde geliştirilebilir.

Node.js best practice’leri, HTTP sunucusu oluştururken modüler yapı, yerleşik modüllerin verimli kullanımı ve her istekte res.end çağrısının yapılmasıdır. Hata yönetimi, try/catch veya error event’leri ile sağlanmalıdır. Yaygın hatalar arasında res.end’in ihmal edilmesi, bilinmeyen rotaların yönetilmemesi ve verimsiz algoritmaların kullanılması yer alır.
Debugging için console.error ve Node.js profiler araçları önerilir. Performans optimizasyonu caching, sıkıştırma ve eşzamanlı bağlantı yönetimi ile sağlanabilir. Güvenlik önlemleri arasında giriş verilerinin doğrulanması, kod enjeksiyonlarından korunma ve HTTPS kullanımı bulunur. Bu yöntemlerle, güvenli, ölçeklenebilir ve performanslı bir HTTP sunucusu geliştirilebilir.

📊 Referans Tablosu

Node.js Element/Concept Description Usage Example
http.createServer HTTP sunucusu oluşturur const server = http.createServer((req,res)=>{res.end('Merhaba');});
res.writeHead Durum kodu ve başlıkları belirler res.writeHead(200, {'Content-Type':'text/plain'});
res.end Yanıtı gönderir ve bağlantıyı kapatır res.end('Merhaba Dünya');
url.parse URL yolunu ayrıştırır const parsedUrl = url.parse(req.url,true);
try/catch Hata yönetimi sağlar try {routes[path](req,res);} catch(e){res.end('Hata');}

HTTP sunucusu oluşturma, Node.js ile istek/yanıt yönetimi, yönlendirme ve hata yönetimi konularında temel yetkinlik kazandırır. Bu bilgiler, daha büyük projelerde API geliştirme, veritabanı entegrasyonu ve performans optimizasyonu için temel oluşturur. Bir sonraki adım olarak Express.js öğrenmek, RESTful API geliştirme ve ileri düzey performans optimizasyon teknikleri uygulamak önerilir. Node.js dokümantasyonu ve açık kaynak projeler, ileri seviye öğrenim için değerli kaynaklardır.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

3
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek