Lajiverta Academy Satın Al — 499₺

Academy 🔌 Backend & API Sunucu Nedir?

Birden çok uç nokta

🔌 Sunucu Nedir? bölümü · Code Quest Backend & API parkuru

Gerçek bir sunucuda tek yol olmaz. Her yol, dış dünyaya açılan bir kapıdır ve bu kapılara uç nokta (endpoint) denir. Piksel Market'in ilk üç kapısını açalım:

SUNUCU KODU (Node · Express)
const app = express();

app.get('/', (req, res) => {
  res.send('Piksel Market API');
});

app.get('/saglik', (req, res) => {
  res.send('ayakta');
});

app.get('/oyunlar/sayi', (req, res) => {
  res.send('Toplam ' + store.oyunlar.length + ' oyun');
});

send('GET', '/');
send('GET', '/saglik');
send('GET', '/oyunlar/sayi');
▸ HTTP TRAFİĞİ
GET /
← 200 OK
content-type: text/html; charset=utf-8
Piksel Market API

GET /saglik
← 200 OK
content-type: text/html; charset=utf-8
ayakta

GET /oyunlar/sayi
← 200 OK
content-type: text/html; charset=utf-8
Toplam 12 oyun

Üç şeye dikkat et:

  • / kök yoldur — sitenin ana sayfası gibi. API'lerde genelde "ben kimim" bilgisini döndürür.
  • /saglik (health check) neredeyse her ciddi sunucuda vardır. Sistemi izleyen araçlar her birkaç saniyede bir buraya uğrar; cevap gelmezse "sunucu düştü" alarmı çalar.
  • store bu laboratuvarın hafızasındaki demo verisidir: Piksel Market'in oyunları, oyuncuları, satışları. SQL dünyasındaki mağazanın aynısı — sol paneldeki 📦 kutulardan içine bakabilirsin.

Yolları tanımlama sırası önemlidir: Express yukarıdan aşağı bakar ve ilk eşleşen yolu çalıştırır, gerisine bakmaz. Aynı yolu iki kez tanımlarsan ikincisi asla çalışmaz:

SUNUCU KODU (Node · Express)
const app = express();

app.get('/oyunlar', (req, res) => res.send('birinci'));
app.get('/oyunlar', (req, res) => res.send('ikinci'));

send('GET', '/oyunlar');
▸ HTTP TRAFİĞİ
GET /oyunlar
← 200 OK
content-type: text/html; charset=utf-8
birinci

Bir de sunucu programcılığının klasik hatası var: işleyiciyi yazdın ama cevap göndermeyi unuttun. Bu durumda sunucu çökmez, hata da vermez — istemci sonsuza kadar bekler:

SUNUCU KODU (Node · Express)
const app = express();

app.get('/unutulmus', (req, res) => {
  const oyun = store.oyunlar[0];
  // res.json(oyun);  ← bu satır unutuldu!
});

send('GET', '/unutulmus');
▸ HTTP TRAFİĞİ
GET /unutulmus
← (cevap yok) — işleyici res.send/res.json çağırmadı, istemci bekliyor.
⚠️ Her işleyici mutlaka bir cevap göndermeli: res.send, res.json, res.end ya da next() ile devretmeli. Sayfanın "sonsuza kadar yüklendiği" hataların çoğunun kaynağı budur.

Kendini test et

Doğru mu, yanlış mı? — Bir işleyicide res.send/res.json çağrılmazsa Express otomatik olarak boş bir cevap gönderir.

Cevabı gör

Cevap: Yanlış

Hayır — cevap hiç gitmez ve istemci bekler. "Sayfa sonsuza kadar yükleniyor" hatasının klasik sebebi budur.

Bu sunucuya GET /oyunlar isteği gelirse ne döner?

  • ikinci
  • birinci
  • İkisi birden
Cevabı gör

Cevap: birinci

Express yukarıdan aşağı bakar ve ilk eşleşeni çalıştırır; ikinci tanım hiç çalışmaz.