CodeBlanks Logo Icon CodeBlanks

Rota grupları

Router ile rota grupları oluşturmayı öğrenirsin.

Rota grupları

Bir rota grubu, ortak önek paylaşan rotaları tek bir router altında toplar. Örnek: kullanıcı rotaları /users altında: GET /users (liste), GET /users/:id (tek kullanıcı), POST /users (yeni).

Bunu express.Router() ile yaparsın: const userRouter = express.Router(); userRouter.get("/", listHandler); userRouter.get("/:id", detailHandler); app.use("/users", userRouter);. Router içinde yollar öneksiz yazılır: "/" ve "/:id". Express /users önekini otomatik ekler. Bu desen, bir kaynağın tüm rotalarını tek yerde tutar. Kod tekrarı azalır, bakım kolaylaşır; her kaynağın kendi router dosyası olur.

Router içinde rota parametreleri

Bir router'a rota parametreli rotalar ekleyebilirsin. Örnek: userRouter.get("/:id", (req, res) => { res.send("Kullanıcı: " + req.params.id); });. Bu rota, /users önekiyle bağlandığında /users/5 isteğini işler ve req.params.id "5" olur.

Router içindeki parametreler, router'ın bağlandığı önekten bağımsızdır. /:id rotası, router /users altında olsun veya /admin/kullanicilar altında olsun aynı şekilde çalışır. Bu, router'ı yeniden kullanılabilir kılar. Ayrıca router'a özgü middleware de eklenebilir: userRouter.use(authMiddleware) yalnızca kullanıcı rotalarında çalışır. Bu, kaynak bazlı erişim kontrolü için kullanışlıdır.

Uygulama Kullanıcı rota grubu yaz

const userRouter = express.Router() tanımla. userRouter.get("/", (req, res) => res.send("Kullanıcı listesi")) ekle. userRouter.get("/:id", (req, res) => res.send("Kullanıcı: " + req.params.id)) ekle. app.use("/users", userRouter) ile bağla. Sunucu /users/5'e istek yapar.

Başlangıç kodu

index.js
const express = require("express");
const app = express();

// bir kullanıcı router'ı oluştur
// kök rotada liste gönder, :id rotasında kullanıcı gönder
// /users altında bağla
// buraya yaz

const server = app.listen(3000, () => {
  const http = require("http");
  http.get("http://localhost:3000/users/5", (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 userRouter = express.Router();
userRouter.get("/", (req, res) => res.send("Kullanıcı listesi"));
userRouter.get("/:id", (req, res) => res.send("Kullanıcı: " + req.params.id));
app.use("/users", userRouter);

const server = app.listen(3000, () => {
  const http = require("http");
  http.get("http://localhost:3000/users/5", (res) => {
    let body = "";
    res.on("data", (c) => body += c);
    res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
  });
});

Beklenen çıktı

Yanıt: Kullanıcı: 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Rota grubu ne işe yarar?

index.js
app.use("/users", userRouter)
  • Tek bir rota tanımlar
  • Hataları yakalar
  • Ortak önekli rotaları toplar Doğru cevap
  • JSON ayrıştırır

Açıklama: Rota grubu ortak önekli rotaları tek router'da toplar.

2 Parçayı rolüne eşle

Kavram Anlamı
userRouter.get('/') Liste rotası
userRouter.get('/:id') Tek kayıt rotası
app.use('/users', ...) Router'ı bağlar
req.params.id Kullanıcı kimliği

3 router :id rotasını tamamla

Soru
userRouter.get("/:id", (req, res) => {
  res.send("Kullanıcı: " + req.____.id);
});
Cevap
userRouter.get("/:id", (req, res) => {
  res.send("Kullanıcı: " + req.params.id);
});

Açıklama: Router içinde de req.params.id kullanılır.

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