CodeBlanks Logo Icon CodeBlanks

app.use

app.use ile global middleware öğrenirsin.

app.use ile global middleware

app.use(fn) bir middleware'i tüm istekler için global olarak kaydeder. Kaydedilen middleware, app.use'tan sonra tanımlanan tüm rotalardan önce çalışır. Örnek: app.use((req, res, next) => { req.requestId = 1; next(); });.

Bu middleware her isteğe bir requestId özelliği ekler. Sonraki rotalar req.requestId ile bu değere erişebilir. Global middleware, istek özelliklerini ekleme (zaman damgası, istek kimliği), günlükleme ve güvenlik kontrolleri gibi işler için kullanılır. Önemli nokta: app.use sırasıdır. Middleware, rota tanımlarından önce kaydedilmezse o rotalarda çalışmaz.

Sıra önemlidir

Express'te kayıt sırası önemlidir. Middleware'ler ve rotalar, kaydedildikleri sırayla çalışır. app.use(logger) çağrısı app.get("/", handler)'dan sonra yapılırsa, logger o rotada çalışmaz.

Doğru düzen: önce app.use ile global middleware'ler, sonra rotalar. Örnek: app.use(express.json()); app.post("/data", handler);. Burada express.json() önce kaydedilir, böylece /data rotasında req.body dolu olur. Sıra yanlışsa req.body undefined kalır. Bu ilke tüm middleware'ler için geçerlidir: önce kaydet, sonra kullan.

Uygulama requestId middleware'ini ekle

app.use((req, res, next) => { req.requestId = 1; next(); }) ile middleware ekle. app.get("/", (req, res) => res.send("İstek: " + req.requestId)) rotası tanımla. Sunucu kendiliğinden kapanır.

Başlangıç kodu

index.js
const express = require("express");
const app = express();

// uygulamaya genel bir middleware ekle
// isteğe kimlik özelliği ekle, sıradakine geç
// kök rotada bu özellik ile 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();

app.use((req, res, next) => {
  req.requestId = 1;
  next();
});
app.get("/", (req, res) => res.send("İstek: " + req.requestId));

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ı

Yanıt: İstek: 1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 app.use çağrısını tamamla

Soru
app.____((req, res, next) => { req.requestId = 1; next(); });
Cevap
app.use((req, res, next) => { req.requestId = 1; next(); });

Açıklama: app.use ile global middleware eklenir.

2 Parçayı rolüne eşle

Kavram Anlamı
app.use Global middleware ekler
req.requestId İsteğe özellik ekler
next() Zinciri sürdürür
req, res, next Middleware parametreleri

3 app.use ile kaydedilen middleware ne zaman çalışır?

index.js
app.use((req, res, next) => { next(); });
  • Yalnızca hata durumunda
  • Yalnızca POST isteklerinde
  • Tüm isteklerde (kayıt sonrası rotalarda) Doğru cevap
  • Sunucu kapandığında

Açıklama: app.use sonrası tüm rotalarda çalışır.

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