Router middleware
- Node.js kursu
- Orta seviye
- Ders 32/116
- 5 dk
Router seviyesinde middleware kullanmayı öğrenirsin.
Router middleware
express.Router() bir router nesnesi oluşturur. Router, app gibi middleware ve rota ekleyebilir, ama belirli bir yol önekiyle bağlanır. router.use(fn) yalnızca o router içindeki rotalarda çalışır.
Örnek: const router = express.Router(); router.use((req, res, next) => { console.log("Router: " + req.url); next(); }); router.get("/list", handler); app.use("/api", router);. Burada router.use yalnızca /api altındaki rotalarda çalışır. app.use'tan farkı kapsamdır: app.use tüm uygulama, router.use yalnızca o router. Bu, API'yı modüllere bölmeyi kolaylaştırır.
router.use vs app.use
app.use tüm uygulamada, router.use yalnızca o router içinde çalışır. Bir router app.use("/api", router) ile bağlandığında, içindeki middleware'ler yalnızca /api ile başlayan isteklerde çalışır.
Router içinde req.url, bağlama yolundan sonrasını gösterir. Örneğin /api/list isteğinde router middleware'i req.url olarak /list görür. Bu, router'ın kendi yol mantığını bağımsız tutmasını sağlar. Aynı router'ı farklı öneklerle birden fazla kez bağlayabilirsin: app.use("/api", router); app.use("/admin", router);. Bu, kod yeniden kullanımını artırır.
Uygulama Router middleware ekle
const router = express.Router() tanımla. router.use((req, res, next) => { console.log("Router: " + req.url); next(); }) ekle. router.get("/list", (req, res) => res.send("Liste")) ekle. app.use("/api", router) ile bağla. Sunucu kendiliğinden kapanır.
Başlangıç kodu
const express = require("express");
const app = express();
// bir router nesnesi oluştur
// router'a middleware ekle: "Router: " + url yazdır
// router'a /list rotası ekle, "Liste" gönder
// router'ı /api altında bağla
// buraya yaz
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/api/list", (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();
const router = express.Router();
router.use((req, res, next) => {
console.log("Router: " + req.url);
next();
});
router.get("/list", (req, res) => res.send("Liste"));
app.use("/api", router);
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/api/list", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
});Beklenen çıktı
Router: /list Yanıt: Liste
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
express.Router() |
Router nesnesi oluşturur |
router.use |
Router'a middleware ekler |
app.use('/api', router) |
Router'ı bağlar |
router.get |
Router'a rota ekler |
2 router.use çağrısını tamamla
router.____((req, res, next) => { console.log("Router: " + req.url); next(); });
router.use((req, res, next) => { console.log("Router: " + req.url); next(); });
Açıklama: router.use ile router'a middleware eklenir.
3 app.use('/api', router) ne yapar?
app.use("/api", router)- Router'ı siler
- Tüm rotaları /api'ye taşır
- Router oluşturur
- Router'ı /api önekiyle bağlar Doğru cevap
Açıklama: Router /api önekiyle uygulamaya bağlanır.