9.06.2024

NestJS: Hello World!

NestJS, server side Node.js uygulamaları geliştirmek için TypeScript ile Kamil Mysliwiec tarafından geliştirilmiş bir framework'tür. NestJS projeleri oluşturduğunuzda varsayılan olarak Express ile çalışır şekilde gelir ancak isterseniz Fastify kullanacak şekilde de ayarlayabilirsiniz.

NestJS geliştiriciler tarafından kolayca bakımı yapılabilen ve test edilebilen, ölçeklenebilir bir uygulama mimarisi sunar.

Kurulum için NodeJS'in kurulu olduğu bir ortamda Nest CLI (Nest Command Line Interface) ile boş bir proje oluşturarak başlayabiliriz. Bunun için öncelikle Nest CLI'ı kuralım.

npm i -g @nestjs/cli

Daha sonra aşağıdaki komutu kullanarak yeni projemizi oluşturalım:

nest new hello-world

Yeni Nest projesi oluşturulurken hangi paket yöneticisini kullanacağınızı seçin ve enter'a basın. Projeniz hazır olduğunda konsolda aşağıdaki gibi bir görüntü ile karşılaşacaksınız:


 
Proje dosyaları ise aşağıdaki gibi olacak: 

Test klasörü, .spec.ts ile biten test dosyaları ve ana proje klasöründe yer alan konfigürasyon dosyalarını şimdilik es geçip src klasöründe yer alan diğer dosyaları inceleyelim.

main.ts: Bu dosya uygulamanın giriş dosyasıdır. Uygulamanın oluşturulup başlatıldığı dosyadır. Bu dosya içerisinde uygulamanın nasıl çalışacağı ile ilgili pek çok ayar yapılabilir.

app.module.ts: Uygulamanın ana modülüdür. 

app.controller.ts: Tek bir route barındıran uygulamanın ilk controller'ıdır.

app.service.ts: Tek br metodu olan basit bir servis barındırır.


Konsol'da proje klasörünün içine girdikten sonra npm start ya da npm run start:dev komutları ile projeyi çalıştırabilirsiniz.

npm run start:dev










Postman ya da istediğiniz herhangi bir başka şekilde localhost:3000'e bir GET isteği gönderdiğinizde. "Hello World!" cevabını alacaksınız.







Varsayılan olarak TypeScript ile ilgili ayarlan yapılmış olan projenizde kodunuzu modüller içinde organize etmeniz için de her şey düşünülmüş. Application modülü (app.module.ts) oluşturulan boş projede hazır olarak geliyor ve ekleyeceğiniz modülleri bu root modülle (AppModule) ilşkilendirerek geliştirme yapmaya devam ediyorsunuz.

Dependency Injection'ın (DI) da kolaylıkla kullanılabildiğini AppController sınıfının constructor'ında AppService'in nasıl inject edildiğini inceleyerek görebilirsiniz.

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

DI, Modüller ve NestJS'in diğer bileşenleri ile ilgili başka yazılar yazmaya çalışacağım.

Esen kalın.