Expressjs’te Middleware Kullanımı

Selim KURT
2 min readFeb 25, 2024

--

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

Her zaman gelişmek için yer olduğunu anlıyorum. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin.

--

--

Selim KURT
Selim KURT

Written by Selim KURT

Software Developer - Mobile & Web Developer #react #reactnative #nextjs #frontend #digitaltransformation #javascript

No responses yet