CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

index.js
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

index.js
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?

index.js
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

Soru
function logger(req, res, next) {
  console.log(req.method + " " + req.url);
  ____();
}
Cevap
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

Orta seviye bölümündeki tüm dersler