Middleware nedir?
- Node.js kursu
- Orta seviye
- Ders 30/116
- 5 dk
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.
Başlangıç kodu
const express = require("express");
const app = express();
// logger adında middleware tanımla
// method ve url yazdır, sıradakine geç
// uygulamaya ekle, kök rotaya yanıt ver
// buraya yaz
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(); });
});
});Örnek çözüm
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(); });
});
});Beklenen çıktı
GET / Yanıt: Merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 next() ne yapar?
function mw(req, res, next) { next(); }- Sunucuyu kapatır
- Kontrolü sıradakine geçirir Doğru cevap
- Yanıtı gönderir
- İsteği siler
Açıklama: next() kontrolü bir sonraki middleware'e geçirir.
2 logger gövdesini tamamla
function logger(req, res, next) {
console.log(req.method + " " + req.url);
____();
}
function logger(req, res, next) {
console.log(req.method + " " + req.url);
next();
}
Açıklama: next() ile zincir sürdürülür.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
req |
Gelen istek |
res |
Yanıt nesnesi |
next |
Sıradakine geçiş |
app.use |
Middleware kaydeder |