CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

index.js
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

index.js
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

Soru
router.____((req, res, next) => { console.log("Router: " + req.url); next(); });
Cevap
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?

index.js
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.

Orta seviye bölümündeki tüm dersler