app.use
- Node.js kursu
- Orta seviye
- Ders 31/116
- 5 dk
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
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
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
app.____((req, res, next) => { req.requestId = 1; next(); });
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?
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.