Rota grupları
- Node.js kursu
- Orta seviye
- Ders 39/116
- 5 dk
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
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
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?
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
userRouter.get("/:id", (req, res) => {
res.send("Kullanıcı: " + req.____.id);
});
userRouter.get("/:id", (req, res) => {
res.send("Kullanıcı: " + req.params.id);
});
Açıklama: Router içinde de req.params.id kullanılır.