CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan bir API yazarsın.

Birleştirme

Son ders birleştirme: tüm parçaları (veri modeli, Express, rotalar, middleware) tek bir çalışan API'de topluyoruz. Ayrıca bir error middleware ekleyeceğiz.

Express'te error middleware dört argümanlı tanımlanır: (err, req, res, next). Bu imza, Express'e bunun bir hata işleyici olduğunu söyler. Rotalardan fırlatılan veya next(err) ile geçirilen hatalar buraya düşer. res.status(500).json({ error: err.message }) ile istemciye hata iletisi döndürülür. 500 “Sunucu hatası” demektir. Bu ders, API'yi üretim hazır hale getiren son parçadır; çünkü hatalar kontrollü biçimde ele alınır.

Error middleware imzası

Express, bir middleware'in error middleware olduğunu argüman sayısından anlar. Normal middleware 3 argümanlıdır (req, res, next); error middleware 4 argümanlıdır (err, req, res, next).

Eğer error middleware 3 argümanlı yazarsan Express onu normal middleware sanar ve hatalar oraya düşmez. Bu yüzden err parametresi başta olmak üzere dört argüman yazmak zorunludur. Hata oluştuğunda Express bu middleware'i çağırır ve err ile hata nesnesini geçirir. err.message hata iletisini verir. res.status(500) ile sunucu hatası kodunu ayarlayıp .json() ile yanıtı gönderirsin. Böylece uygulama beklenmedik hatalarda çökmez.

Uygulama Error middleware ekle

Bir error middleware tanımla. Dört argümanlı (err, req, res, next) bir fonksiyon olsun. res.status(500).json({ error: err.message }) ile hata yanıtını gönder. Middleware rotalardan SONRA olsun. Self-request hazır.

Başlangıç kodu

index.js
const books = [];
books.push({ id: 1, title: "Node.js" });

const express = require("express");
const app = express();
app.use(express.json());

app.use((req, res, next) => {
  console.log(req.method, req.url);
  next();
});

app.get("/books", (req, res) => {
  res.json(books);
});

// Error middleware (4 argümanlı: err, req, res, next) — 500 ile JSON döndür
// buraya yaz

// Self-request (hazır kod)
const server = app.listen(3000, () => {
  const http = require("http");
  http.get("http://localhost:3000/books", (res) => {
    let body = "";
    res.on("data", (c) => body += c);
    res.on("end", () => { console.log(body); server.close(); });
  });
});

Örnek çözüm

index.js
app.use((err, req, res, next) => {
  res.status(500).json({ error: err.message });
});

Beklenen çıktı

GET /books
[{"id":1,"title":"Node.js"}]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Parçayı rolüne eşle

Kavram Anlamı
err Hata nesnesi
res.status(500) Sunucu hatası kodu
err.message Hata iletisi
4 argüman Error middleware işareti

2 Express error middleware kaç argüman alır?

index.js
(err, req, res, next)
  • 4 Doğru cevap
  • 3
  • 2
  • 5

Açıklama: Error middleware 4 argümanlıdır; bu imza onu işaretler.

3 status kodunu ayarla

Soru
res.____(500).json({ error: err.message });
Cevap
res.status(500).json({ error: err.message });

Açıklama: res.status(500) sunucu hatası kodunu ayarlar.

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