Node.js
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.
Örnek çözümü göster
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(); });
});
});
Kendini test et
-
app.use çağrısını tamamla
app.____((req, res, next) => { req.requestId = 1; next(); });
Cevabı göster
app.use((req, res, next) => { req.requestId = 1; next(); });
-
Parçayı rolüne eşle
- app.use
- Global middleware ekler
- req.requestId
- İsteğe özellik ekler
- next()
- Zinciri sürdürür
- req, res, next
- Middleware parametreleri
-
app.use ile kaydedilen middleware ne zaman çalışır?
app.use((req, res, next) => { next(); });
- Yalnızca hata durumunda
- Yalnızca POST isteklerinde
- Tüm isteklerde (kayıt sonrası rotalarda)
- Sunucu kapandığında
Cevabı göster
Tüm isteklerde (kayıt sonrası rotalarda) — app.use sonrası tüm rotalarda çalışır.
Sıradaki ders: Router middleware