Expressjs’te Middleware Kullanımı
Middleware fonksiyonu, üç temel parametreye sahiptir: req (istek), res (yanıt), ve next (bir sonraki middleware’e geçişi tetikler). Bu fonksiyonlar, istek nesnesini okuyabilir, yanıt nesnesini değiştirebilir ve/veya Express uygulamasının istek-yanıt döngüsünde bir sonraki fonksiyona geçebilir. Middlewarelar uygulama düzeyinde, yönlendirici düzeyinde veya hata işleme için kullanılabilir.
Uygulama Düzeyinde Middleware
Uygulama düzeyinde middlewarelar, app.use() ve app.METHOD() fonksiyonları ile tanımlanır. Örneğin, her istek için çalışan basit bir logger middleware inceleyelim.
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
app.get('/', (req, res) => {
res.send('Ana Sayfa');
});
app.listen(3000, () => {
console.log('Sunucu port 3000 üzerinde çalışıyor.');
});
Yukarıdaki kodda app.use() ile tanımlanan middleware, sunucuya gelen her istek için çalışır ve konsola bir zaman damgası yazar. next() fonksiyonu çağrıldığında, Express istek-yanıt döngüsünde bir sonraki adıma geçer.
Yönlendirici Düzeyinde Middleware
Yönlendirici düzeyinde middlewarelar, özellikle belirli bir yönlendirici ile ilişkilendirilebilir.
const express = require('express');
const router = express.Router();
router.use((req, res, next) => {
console.log('Yönlendirici middleware:', Date.now());
next();
});
router.get('/about', (req, res) => {
res.send('Hakkında Sayfası');
});
app.use('/', router);
Yukarıdaki örnekte, router.use() ile tanımlanan middleware yalnızca /about yolu için tanımlanan isteklerde çalışır.
Hata İşleme Middlewareları
Express, hataları işlemek için özel middlewarelar kullanır. Bu middlewarelar dört parametre alır: err, req, res, ve next.
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Bir şeyler yanlış gitti!');
});
Hata işleme middleware, herhangi bir middleware içinde oluşan ve next fonksiyonuna iletilen hataları yakalar ve işler.
Okuduğunuz için teşekkürler
- 👏 Beğendiyseniz alkışlayın ve beni takip edin 👉
- 📰 Daha fazla içerik görüntülemek için tıklayın
- 🔔 Beni takip edin: LinkedIn!
Her zaman gelişmek için yer olduğunu anlıyorum. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin.