CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

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

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

Soru
app.route("/items")
  .____((req, res) => res.send("Öğeler"))
  .post((req, res) => res.send("Eklendi"));
Cevap
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?

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

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