JAVASCRIPT // TEMELLERD::01 BAŞLANGIÇ
20m READCOMPLETION: 90%ID::BE-101

BACKEND NEDİR? SUNUCU, VERİTABANI VE API MANTIĞI

Backend geliştirmenin temel parçaları: sunucu, route, controller, veritabanı, auth ve güvenlik.

Backend Nedir? Sunucu, Veritabanı ve API Mantığı

Backend, uygulamanın görünmeyen ama sistemi ayakta tutan tarafıdır. Bu derste backend'in parçalarını ve bir isteğin sunucuda nasıl işlendiğini öğreneceksin.

Öğrenme Hedefleri

  • Backend katmanlarını tanımak
  • Route, controller, service ve database ayrımını anlamak
  • Auth ve validation neden gerekir görmek
  • Basit backend proje yapısını kurabilmek

Backend Akışı

// TXT //
Request
  -> Route
  -> Validation
  -> Controller
  -> Service
  -> Database
  -> Response

Bu ayrım büyüyen projelerde kodun anlaşılır kalmasını sağlar.

Backend Dosya Düzeni

Basit bir backend projede klasörler şöyle ayrılabilir:

// TXT //
src/
  routes/
  controllers/
  services/
  repositories/
  middlewares/
  schemas/

Bu ayrım zorunlu bir kural değil, büyüyen projede zihinsel yükü azaltan bir düzendir.

Route

Route, gelen isteğin hangi işlemle eşleşeceğini belirtir.

// JS //
app.get('/api/articles', listArticles);
app.post('/api/articles', createArticle);

Route mümkün olduğunca ince kalmalıdır.

Validation

Kullanıcıdan gelen veri güvenilir değildir. Backend her inputu doğrulamalıdır.

// JS //
if (!title || title.length < 3) {
  return res.status(400).json({ error: 'Başlık çok kısa' });
}

Gerçek projelerde Zod, Joi veya framework validation araçları kullanılır.

Service Katmanı

Service, iş kuralının yaşadığı yerdir.

// JS //
async function publishArticle(articleId, userId) {
  const article = await articleRepo.findById(articleId);
  if (article.authorId !== userId) throw new Error('Yetki yok');
  return articleRepo.update(articleId, { status: 'PUBLISHED' });
}

Bu kod controller içinde dağınık durmak yerine ayrı katmanda daha okunabilir olur.

Backend Güvenlik Refleksi

Backend geliştirici şu soruları sürekli sorar:

  • Bu kullanıcı bu işlemi yapmaya yetkili mi?
  • Gelen veri beklediğim formatta mı?
  • Hata mesajı gizli bilgi sızdırıyor mu?
  • Bu endpoint brute force'a açık mı?
  • Bu dosya yüklemesi güvenli mi?

Hata Yönetimi

Backend her hatada stack trace döndürmemelidir. Kullanıcıya sade mesaj, log sistemine teknik detay gitmelidir.

// JS //
app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).json({ error: 'Beklenmeyen bir hata oluştu' });
});

Bu kalıbın tam örneği için Express Global Error Middleware kod örneğine bakabilirsin.

Backend Kalite Kontrol Listesi

  • Input validation var mı?
  • Yetki kontrolü endpoint içinde yeniden yapılıyor mu?
  • Hata response formatı tutarlı mı?
  • Loglar hassas veri içermiyor mu?
  • Veritabanı sorguları ölçülüyor mu?
  • Rate limit gereken endpointlerde aktif mi?
  • Test edilebilir servis katmanı var mı?

Alıştırma

Bir not alma uygulaması için backend akışı çiz:

  • Kullanıcı giriş yapar.
  • Not listesi çekilir.
  • Yeni not eklenir.
  • Sadece not sahibi güncelleyebilir.

Her adımda hangi kontrol yapılmalı yaz.

Ek görev: Not oluşturma endpointi için request body, success response ve validation error response formatı tasarla.

Sonraki Adım

Backend öğrenirken API 101, JWT Authentication ve PostgreSQL Index Optimizasyonu dersleri birlikte çalışılmalıdır.