crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
1. Middleware Nedir?
Middleware, bir HTTP isteği (Request) sunucuya ulaştığında, o istek nihai rotaya (Route Handler) varmadan önce çalışan fonksiyonlardır. Bu fonksiyonlar şunları yapabilir:
[]Herhangi bir kodu çalıştırabilir.
[]İstek (req) ve cevap (res) nesneleri üzerinde değişiklik yapabilir.
[]İstek-cevap döngüsünü sonlandırabilir.
[]Yığındaki bir sonraki middleware fonksiyonunu (next) çağırabilir.
2. Middleware'in Anatomisi
Bir middleware fonksiyonu üç temel parametre alır: req, res ve next. next() fonksiyonu kritik öneme sahiptir; eğer onu çağırmazsanız, istek sunucuda asılı kalır ve kullanıcıya asla cevap gitmez.
JavaScript:
app.use((req, res, next) => {
console.log("Bir istek geldi!");
// İşimiz bitti, sıradaki middleware veya rotaya geç:
next();
});
3. En Yaygın Kullanım Senaryoları
Neden doğrudan rotaya (Route) yazmıyoruz da middleware kullanıyoruz? Çünkü bazı işlemler evrenseldir ve her rotada tekrar yazmak yerine tek merkezden yönetilmelidir.
[]Logging (Günlük Tutma): Hangi sayfaya ne zaman girildiğini kaydetmek.
[]Authentication (Kimlik Doğrulama): Kullanıcı giriş yapmamışsa profil sayfasına erişimini engellemek.
[]Parsing (Ayrıştırma): Gelen karmaşık JSON verilerini okunabilir hale getirmek (express.json()).
[]Error Handling (Hata Yönetimi): Uygulama çöktüğünde kullanıcıya düzgün bir hata mesajı göstermek.
4. Middleware Tipleri
A. Uygulama Seviyesi (Application-level): app.use() ile tüm uygulama için geçerli olanlardır.
B. Rota Seviyesi (Router-level): Sadece belirli bir rota grubu için çalışanlardır.
C. Hata Yönetimi (Error-handling): Dört parametre alan özel fonksiyonlardır: (err, req, res, next).
JavaScript:
// Sadece "/admin" ile başlayan yollarda çalışan bir koruma middleware'i
app.use('/admin', (req, res, next) => {
if (kullaniciAdminMi) {
next();
} else {
res.status(403).send("Yetkiniz yok!");
}
});
5. Bir "Bariyer" Olarak Middleware
Middleware'ler birer filtre gibidir. İstek bu filtrelerden geçemezse (res.send ile yanıt dönerse), sonraki aşamalara asla ulaşamaz. Bu sayede sunucunuzu gereksiz yükten ve kötü niyetli isteklerden korumuş olursunuz.
Sonuç
Middleware mantığı, Express.js'i bu kadar modüler ve güçlü kılan şeydir. "İsteği al, işle, gerekirse bir sonrakine devret" prensibiyle çalışan bu yapı, temiz ve sürdürülebilir bir backend mimarisinin temelidir.