Node.js
Router middleware
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.
Örnek çözümü göster
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(); });
});
});
Kendini test et
-
Parçayı rolüne eşle
- 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
-
router.use çağrısını tamamla
router.____((req, res, next) => { console.log("Router: " + req.url); next(); });
Cevabı göster
router.use((req, res, next) => { console.log("Router: " + req.url); next(); });
-
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
Cevabı göster
Router'ı /api önekiyle bağlar — Router /api önekiyle uygulamaya bağlanır.
Sıradaki ders: Error middleware