Yükleniyor...

Basit Yönlendirme

Basit Yönlendirme, Node.js uygulamalarında gelen HTTP taleplerini belirli URL yollarına ve HTTP yöntemlerine göre yönlendirme tekniğidir. Bu yöntem, uygulamanın veri akışını organize etmek, kodun modüler ve sürdürülebilir olmasını sağlamak ve uygulamaların ölçeklenebilirliğini artırmak için kritik öneme sahiptir. Node.js projelerinde API geliştirme, web sunucusu oluşturma ve mikroservis mimarilerinde ruteleme yapmak için kullanılır.
Basit Yönlendirme, GET, POST, PUT, DELETE gibi HTTP yöntemlerine göre farklı davranışlar uygulanması gerektiğinde devreye girer. Node.js'de bu konsept, JavaScript sözdizimi, veri yapıları, algoritmalar ve nesne yönelimli programlama (OOP) prensipleri ile entegre bir şekilde çalışır. Bu eğitimde, basit yollar oluşturmayı, asenkron veri işlemleri yapmayı, JSON cevaplar göndermeyi ve rute mantığını fonksiyonlar veya sınıflar ile organize etmeyi öğreneceksiniz. Ayrıca, hata yönetimi, performans optimizasyonu ve güvenlik konularına dair en iyi uygulamalar da ele alınacaktır.
Bu ders, yazılım geliştirme ve sistem mimarisi bağlamında basit yönlendirme kavramlarını ileri düzeyde uygulamanıza yardımcı olacak, Node.js projelerinde gerçek dünya senaryolarına uyarlanabilir örnekler sunacaktır.

Temel Örnek

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

function yonlendirici(req, res) {
const yol = url.parse(req.url, true).pathname;
res.setHeader('Content-Type', 'application/json');

if (req.method === 'GET' && yol === '/merhaba') {
res.statusCode = 200;
res.end(JSON.stringify({ mesaj: 'Node.js uygulamasına hoş geldiniz!' }));
} else if (req.method === 'POST' && yol === '/veri') {
let veri = '';
req.on('data', chunk => veri += chunk.toString());
req.on('end', () => {
res.statusCode = 200;
res.end(JSON.stringify({ alinan: JSON.parse(veri) }));
});
} else {
res.statusCode = 404;
res.end(JSON.stringify({ hata: 'Yol bulunamadı' }));
}

}

const server = http.createServer(yonlendirici);
server.listen(3000, () => console.log('Sunucu [http://localhost:3000](http://localhost:3000) adresinde çalışıyor'));

Yukarıdaki örnekte, Node.js'in http modülü ile bir sunucu oluşturulmuş ve url modülü ile istek yolları analiz edilmiştir. yonlendirici fonksiyonu, gelen her isteği ele alır, yol ve HTTP yöntemi req.method ile belirlenir. GET /merhaba talebine bir karşılama mesajı, POST /veri talebine ise asenkron olarak alınan veri JSON formatında yanıt olarak gönderilir. Diğer tüm yollar 404 ile cevaplanır. Bu örnek, temel yönlendirme, asenkron veri işleme ve güvenli JSON yanıtı kavramlarını Node.js standartları ve en iyi uygulamaları ile göstermektedir.

Pratik Örnek

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

const veriDeposu = [];

class Router {
constructor() {
this.yollar = {};
}

kaydet(metod, yol, handler) {
if (!this.yollar[metod]) this.yollar[metod] = {};
this.yollar[metod][yol] = handler;
}

istekYakala(req, res) {
const yol = url.parse(req.url, true).pathname;
const metod = req.method;
const handler = this.yollar[metod] && this.yollar[metod][yol];

if (handler) {
handler(req, res);
} else {
res.statusCode = 404;
res.end(JSON.stringify({ hata: 'Yol bulunamadı' }));
}
}

}

const router = new Router();

router.kaydet('GET', '/ogeler', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ ogeler: veriDeposu }));
});

router.kaydet('POST', '/ogeler', (req, res) => {
let veri = '';
req.on('data', chunk => veri += chunk.toString());
req.on('end', () => {
try {
const oge = JSON.parse(veri);
veriDeposu.push(oge);
res.statusCode = 201;
res.end(JSON.stringify({ mesaj: 'Öğe eklendi', oge }));
} catch (err) {
res.statusCode = 400;
res.end(JSON.stringify({ hata: 'Geçersiz JSON' }));
}
});
});

const server = http.createServer((req, res) => router.istekYakala(req, res));
server.listen(3000, () => console.log('Sunucu [http://localhost:3000](http://localhost:3000) adresinde çalışıyor'));

Bu ileri düzey örnek, Router sınıfı ile modüler bir yönlendirme yapısı sunar. GET /ogeler isteği veri deposunu döndürürken, POST /ogeler isteği JSON formatında yeni bir öğe ekler. try/catch kullanımı ile hatalı JSON verileri güvenli şekilde işlenir. Bu yapı, OOP prensiplerini uygular, asenkron veri yönetimini optimize eder ve Node.js projelerinde modülerlik ve ölçeklenebilirlik sağlar.

Node.js en iyi uygulamaları, Content-Type başlıklarını doğru kullanmak, uygun HTTP kodları ile yanıt göndermek, modüler yapı ve try/catch ile hata yönetimi sağlamaktır. Yaygın hatalar, global değişken kullanımı, error eventlerini ihmal etmek, rotaları doğrudan kodlamak ve veri doğrulamasını atlamaktır. Node.js'de debug için logging ve memory inspection araçları kullanılır. Performans optimizasyonu için bloklayan işlemler azaltılmalı, nesneler ve fonksiyonlar yeniden kullanılmalı, eventler verimli yönetilmelidir. Güvenlik için giriş verileri doğrulanmalı ve sanitize edilmelidir.

📊 Referans Tablosu

Node.js Element/Concept Description Usage Example
Router Rotaları modüler şekilde yönetir router.kaydet('GET', '/yol', handler)
req.method İstek HTTP metodunu gösterir if (req.method === 'POST') {...}
req.on('data') Verileri asenkron olarak alır req.on('data', chunk => {...})
res.end() Yanıtı gönderir ve bağlantıyı kapatır res.end(JSON.stringify({ mesaj: 'Tamam'}))
statusCode HTTP durum kodu res.statusCode = 404
Content-Type Yanıt içeriği tipi res.setHeader('Content-Type', 'application/json')

Özet ve sonraki adımlar: Basit Yönlendirme, HTTP yolları ve metodlarını yönetmeyi, asenkron veri işleme ve güvenli yanıt göndermeyi öğretir. Modüler yapı ve hata yönetimi, API ve uygulama ölçeklenebilirliği için kritiktir. Sonraki adımlar middleware, kimlik doğrulama ve Express.js veya Fastify gibi frameworkler ile ileri seviye ruteleme konularını kapsamalıdır. Pratik yaparak ve resmi dokümantasyonu inceleyerek becerilerinizi geliştirebilirsiniz.

🧠 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

4
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