Node.js
Middleware nedir?
Middleware kavramını ve next fonksiyonunu öğrenirsin.
Middleware nedir?
Middleware (ara katman), Express'te bir istek ile yanıt arasına eklenen fonksiyondur. Her middleware üç parametre alır: req (istek), res (yanıt) ve next (sıradakine geç). Örnek: function logger(req, res, next) { console.log(req.url); next(); }.
next() çağrısı kontrolü bir sonraki middleware'e veya rotaya geçirir. next() çağrılmazsa istek askıda kalır; yanıt hiç gönderilmez. Middleware'ler bir zincir oluşturur: her biri sırayla çalışır ve next() ile sonrakine geçer. Bu zincir, istek işlemenin temelidir: günlükleme, kimlik doğrulama, veri ayrıştırma gibi işleri ayrı middleware'lere bölmek mümkün olur.
Middleware imzası
Bir middleware fonksiyonu üç parametre alır: (req, res, next). req gelen isteği, res yanıtı, next sıradakine geçiş fonksiyonunu temsil eder.
Örnek bir günlükleme middleware'i: function logger(req, res, next) { console.log(req.method + " " + req.url); next(); }. Bu, her istekte method ve URL'i yazdırır ve next() ile zinciri sürdürür. app.use(logger) ile tüm rotalardan önce çalışacak şekilde kaydederiz. Middleware, rota tanımlarından önce kaydedilirse tüm isteklerde çalışır; sonra kaydedilirse yalnızca o noktadan sonraki rotalarda.
Uygulama logger middleware'ini yaz
logger(req, res, next) fonksiyonu tanımla: gövdesi console.log(req.method + " " + req.url); next();. app.use(logger) ile ekle. app.get("/", (req, res) => res.send("Merhaba")) rotası tanımla. Sunucu kendiliğinden kapanır.
Örnek çözümü göster
const express = require("express");
const app = express();
function logger(req, res, next) {
console.log(req.method + " " + req.url);
next();
}
app.use(logger);
app.get("/", (req, res) => res.send("Merhaba"));
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
});
Kendini test et
-
next() ne yapar?
function mw(req, res, next) { next(); }
- Sunucuyu kapatır
- Kontrolü sıradakine geçirir
- Yanıtı gönderir
- İsteği siler
Cevabı göster
Kontrolü sıradakine geçirir — next() kontrolü bir sonraki middleware'e geçirir.
-
logger gövdesini tamamla
function logger(req, res, next) {
console.log(req.method + " " + req.url);
____();
}
Cevabı göster
function logger(req, res, next) {
console.log(req.method + " " + req.url);
next();
}
-
Parçayı rolüne eşle
- req
- Gelen istek
- res
- Yanıt nesnesi
- next
- Sıradakine geçiş
- app.use
- Middleware kaydeder
Sıradaki ders: app.use