Middleware
- Node.js kursu
- Orta seviye
- Ders 68/116
- 6 dk
Logging ve error middleware'ları eklersin.
Middleware
Dördüncü ders middleware: istek ve yanıt arasına yerleşen fonksiyonlar. app.use((req, res, next) => { ... }) ile tanımlanır. Her istekte çalışır; next() çağrılınca bir sonraki middleware'e veya rotaya geçer.
Yaygın bir kullanım loglama: console.log(req.method, req.url) ile her isteğin metodunu ve yolunu yazdırırsın. Örneğin GET /books isteği gelince GET /books yazılır. Middleware, rotalardan ÖNCE tanımlanmalı; aksi halde istek rotaya ulaşır ve middleware atlanır. next() çağrılmazsa istek askıda kalır. Bu yüzden her middleware'de mutlaka next() veya bir yanıt gönderimi olmalıdır.
Logging middleware
Bir logging middleware, her isteği kaydeder. app.use((req, res, next) => { console.log(req.method, req.url); next(); }) ile tanımlarsın. Bu, tüm isteklerde çalışır.
Önce console.log ile metod ve yol yazılır, sonra next() ile akış devam eder. Eğer next()'i unutursan istek hiçbir rotaya ulaşamaz ve istemci yanıt alamaz. Middleware sırası önemlidir: app.use ile eklenen middleware, ancak kendisinden SONRA tanımlanan rotaları etkiler. Bu yüzden logging middleware'ı rotalardan önce yazmalısın. Böylece her istekte önce log, sonra rota çalışır; hem izleme hem de hata ayıklama kolaylaşır.
Uygulama Logging middleware ekle
Bir logging middleware tanımla. app.use((req, res, next) => { ... }) ile console.log(req.method, req.url) yazdır ve next() çağır. Middleware rotalardan ÖNCE olsun. Self-request hazır.
Başlangıç kodu
const books = [];
books.push({ id: 1, title: "Node.js" });
const express = require("express");
const app = express();
app.use(express.json());
// Logging middleware — method ve url yazdır, sonraki adıma geç
// buraya yaz
app.get("/books", (req, res) => {
res.json(books);
});
// Self-request (hazır kod)
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/books", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log(body); server.close(); });
});
});Örnek çözüm
app.use((req, res, next) => {
console.log(req.method, req.url);
next();
});Beklenen çıktı
GET /books
[{"id":1,"title":"Node.js"}]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Middleware'den sonraki adıma geçmek için ne çağrılır?
next()- res.send()
- return
- app.use()
- next() Doğru cevap
Açıklama: next() akışı bir sonraki middleware'e veya rotaya geçirir.
2 next'i çağır
console.log(req.method, req.url); ____();
console.log(req.method, req.url); next();
Açıklama: next() ile akış sonraki adıma geçer.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
app.use |
Middleware ekler |
req.method |
HTTP metodu |
req.url |
İstek yolu |
next() |
Sonraki adıma geçer |