NestJS Nedir ve Ne İçin Kullanılır?
Sözlük

NestJS Nedir ve Ne İçin Kullanılır?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

NestJS, Node.js üzerinde TypeScript ile modüler ve test edilebilir sunucu uygulamaları yazmak için kullanılan bir backend çerçevesidir. Yapısı ve örnek.

NestJS nedir?

NestJS, Node.js üzerinde çalışan, ölçeklenebilir sunucu tarafı (backend) uygulamalar geliştirmek için kullanılan açık kaynaklı bir çerçevedir. TypeScript ile yazılmıştır ve TypeScript ile kullanıma öncelik verir. Express ya da Fastify gibi HTTP kütüphaneleri üzerinde çalışır ve onlara düzenli bir uygulama mimarisi ekler.

Çerçevenin çıkış noktası şudur: Node.js ekosisteminde güçlü kütüphaneler vardı, ama büyük bir projeyi nasıl organize edeceğine dair ortak bir yapı yoktu. NestJS bu yapıyı sağlar.

NestJS'in temel yapı taşları

  • Modül: İlgili bileşenleri bir arada tutan birimdir. Uygulama modüllerden oluşan bir ağaçtır.
  • Controller: Gelen HTTP isteklerini karşılar ve hangi yöntemin çalışacağını belirler.
  • Servis (provider): İş mantığını taşır ve başka bileşenlere enjekte edilir.
  • Bağımlılık enjeksiyonu: Sınıflar ihtiyaç duydukları bağımlılıkları kendileri oluşturmaz, çerçeve verir; bu test edilebilirliği artırır.
  • Dekoratörler: Yönlendirme, doğrulama ve yetkilendirme gibi davranışları sınıf ve metotlara etiketle ekler.

Bu yapı, deneyimli geliştiricilere Angular gibi çerçevelerden tanıdık gelir.

İstek yaşam döngüsü

NestJS'te bir istek sırayla birkaç katmandan geçer. Guard, isteğin işlenmesine izin verilip verilmeyeceğine karar verir, örneğin kullanıcının oturumu ve yetkisini kontrol eder. Pipe, gelen veriyi doğrular ve dönüştürür. Interceptor, işlemin öncesinde ve sonrasında araya girerek kayıt tutma, yanıtı biçimlendirme ya da önbellek gibi işleri yapar. Hatalar exception filter ile tek merkezde yönetilir.

Bu katmanlı yaklaşım, kimlik doğrulama, doğrulama ve loglama gibi tekrar eden işleri iş mantığından ayırır.

Küçük bir örnek

Örneğin bir eğitim platformunun API'sinde kurslar modülü bulunur. Kurs controller'ı "kursları listele" isteğini karşılar, kurs servisi veritabanından veriyi alır, bir guard yalnızca giriş yapmış kullanıcıların erişmesine izin verir ve bir pipe gelen filtre parametrelerini doğrular.

Yeni bir özellik, örneğin sertifikalar, eklenecekse ayrı bir modül açılır ve ana uygulamaya bağlanır. Böylece proje büyüse bile her özelliğin kendi sınırı olur.

NestJS ne için kullanılır?

  • REST ve GraphQL API'leri.
  • Mikroservis ve mesajlaşma tabanlı sistemler; çerçeve farklı iletişim biçimleri için hazır destek sunar.
  • Gerçek zamanlı uygulamalar için WebSocket tabanlı kanallar.
  • Kurumsal backend uygulamaları ve çok ekipli projeler.

Veritabanı erişimi için TypeORM, Prisma gibi araçlarla birlikte sık kullanılır; çerçeve belirli bir ORM'i zorunlu kılmaz.

Express ile farkı

Express küçük, esnek ve kuralsız bir çerçevedir; yapıyı geliştirici kurar. NestJS ise yapıyı hazır getirir. Küçük bir servis ya da hızlı prototip için Express yeterli ve hafif olabilir. Çok geliştiricili, uzun ömürlü projelerde NestJS'in modül yapısı, bağımlılık enjeksiyonu ve test kolaylığı proje düzenini korur.

NestJS Express'in rakibi değil, üzerine oturan bir katmandır; HTTP işini yapan kütüphane olarak Express ya da Fastify seçilebilir.

Mindset programlarında NestJS

NestJS İleri Seviye ile Kurumsal Backend programı NestJS mimarisi ve modül tasarımı, istek yaşam döngüsü (guard, interceptor, pipe), veri katmanı ve transaction yönetimi, yapılandırma, kimlik ve güvenlik, test edilebilirlik ve kalite güvencesi, ölçeklenme, gözlemlenebilirlik ve dağıtım modüllerini içerir.

Modern Web Geliştirme, Backend (Node.js / NestJS) programı ise Node.js runtime, NestJS modüler yapısı, RESTful API tasarımı, veritabanı entegrasyonu, kimlik doğrulama ve yetkilendirme, mikroservis ve mesajlaşma desenleri ile test, CI/CD ve üretim hazırlığını kapsar.

İlgili Mindset programı

NestJS İleri Seviye ile Kurumsal Backend

Sık sorulanlar

Sık sorulan sorular

NestJS bir programlama dili midir?

Hayır. NestJS bir çerçevedir. Programlama dili olarak TypeScript (ve istenirse JavaScript) kullanılır, çalışma ortamı ise Node.js'tir. Çerçeve; modül, denetleyici ve servis yapısı ile uygulamaya düzen getirir.

NestJS öğrenmek için Node.js bilmek gerekir mi?

Evet, temel Node.js, JavaScript ve tercihen TypeScript bilgisi gerekir. HTTP, REST ve temel nesne yönelimli programlama kavramlarına aşinalık da öğrenmeyi hızlandırır. Özellikle dekoratörler ve bağımlılık enjeksiyonu NestJS'in temel kavramlarıdır; TypeScript bilgisi bunları kavramayı kolaylaştırır.

NestJS ile hangi veritabanları kullanılabilir?

Çerçeve veritabanından bağımsızdır. İlişkisel ve ilişkisel olmayan veritabanları, TypeORM, Prisma, Mongoose gibi araçlar üzerinden kullanılabilir. Seçim projenin ihtiyacına göre yapılır: ilişkisel şema ve işlemler gerekiyorsa genellikle bir ORM ile ilişkisel veritabanı, esnek doküman yapısı gerekiyorsa Mongoose ile doküman veritabanı tercih edilir.

NestJS mikroservis mimarisi için uygun mudur?

Evet, çerçeve mikroservis iletişimi için taşıma katmanı seçenekleri sunar. Yine de mikroservise geçmek mimari bir karardır; NestJS monolit uygulamalar için de aynı ölçüde kullanılır. Modüler yapısı sayesinde önce modüler bir monolit kurup gerekirse modülleri sonradan servislere ayırmak da mümkündür.

NestJS Nedir? Node.js Backend Framework'ü Rehberi