Node.js
Method chaining
app.route ile method chaining öğrenirsin.
Method chaining: app.route
app.route(yol) aynı yola birden fazla HTTP metodunu zincirleme olarak eklemenin yoludur. Örnek: app.route("/items").get(getHandler).post(postHandler);. Bu, GET /items ve POST /items rotalarını tek bir yerde tanımlar.
Method chaining, yolu bir kez yazıp tüm metodları ardışık eklemeyi sağlar. .get(), .post(), .put(), .delete() sırayla çağrılır. Bu, aynı kaynağın tüm işlemlerini tek yerde toplar: okuma, oluşturma, güncelleme, silme. Kod daha okunaklı olur ve yol tekrarı önlenir. Aynı yolu app.get ve app.post ile ayrı ayrı yazmak yerine, app.route ile tek zincirde yazarsın.
Zincirin avantajı
app.route kullanmadan aynı yola iki rota yazmak şöyledir: app.get("/items", h1); app.post("/items", h2);. Yol "/items" iki kez yazılır. app.route ile ise yol bir kez: app.route("/items").get(h1).post(h2);.
Bu küçük fark büyük projelerde önem kazanır. Yol değiştiğinde (örneğin /items'dan /products'a), tek yeri güncellersin. Ayrıca tüm işlemler bir arada olduğu için kaynağın tam API'sini tek bakışta görürsün. Bu, REST API tasarımında yaygın bir desendir. app.route ayrıca bir router üzerinde de çalışır: router.route("/items").... Bu, modüler router ile method chaining'i birleştirir.
Uygulama app.route ile zincirleme rota yaz
app.route("/items").get((req, res) => res.send("Öğeler")).post((req, res) => res.send("Eklendi")) tanımla. Sunucu /items'e GET isteği yapar.
Örnek çözümü göster
const express = require("express");
const app = express();
app.route("/items")
.get((req, res) => res.send("Öğeler"))
.post((req, res) => res.send("Eklendi"));
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/items", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
});
Kendini test et
-
app.route zincirini tamamla
app.route("/items")
.____((req, res) => res.send("Öğeler"))
.post((req, res) => res.send("Eklendi"));
Cevabı göster
app.route("/items")
.get((req, res) => res.send("Öğeler"))
.post((req, res) => res.send("Eklendi"));
-
Parçayı rolüne eşle
- app.route('/items')
- Yolu bir kez tanımlar
- .get(...)
- GET metodunu ekler
- .post(...)
- POST metodunu ekler
- .delete(...)
- DELETE metodunu ekler
-
app.route('/items').get(h1).post(h2) ne tanımlar?
app.route("/items").get(h1).post(h2)
- Yalnızca GET /items
- Yalnızca POST /items
- İki ayrı yol
- Hem GET hem POST /items
Cevabı göster
Hem GET hem POST /items — Zincir hem GET hem POST /items tanımlar.
Sıradaki ders: Özet - Routing