Method chaining
- Node.js kursu
- Orta seviye
- Ders 40/116
- 5 dk
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.
Başlangıç kodu
const express = require("express");
const app = express();
// app.route ile /items yoluna zincirleme rota ekle
// GET "Öğeler", POST "Eklendi" gönder
// buraya yaz
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(); });
});
});Örnek çözüm
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(); });
});
});Beklenen çıktı
Yanıt: Öğeler
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 app.route zincirini tamamla
app.route("/items")
.____((req, res) => res.send("Öğeler"))
.post((req, res) => res.send("Eklendi"));
app.route("/items")
.get((req, res) => res.send("Öğeler"))
.post((req, res) => res.send("Eklendi"));
Açıklama: .get() ile GET metodu eklenir.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
app.route('/items') |
Yolu bir kez tanımlar |
.get(...) |
GET metodunu ekler |
.post(...) |
POST metodunu ekler |
.delete(...) |
DELETE metodunu ekler |
3 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 Doğru cevap
Açıklama: Zincir hem GET hem POST /items tanımlar.