NestJS Nedir? NestJS Proje Oluşturma ve Çalıştırma: Backend Geliştiriciler İçin Temel Kılavuz

NestJS Nedir? NestJS, Node.js üzerine inşa edilmiş, modern ve ölçeklenebilir uygulamalar geliştirmek için kullanılan açık kaynaklı bir framework‘tür. TypeScript ile yazılmıştır ve JavaScript destekler. NestJS, backend geliştirme sürecini hızlandırmak ve daha verimli hale getirmek için modüler bir mimari, güçlü dependency injection (bağımlılık enjeksiyonu) ve declarative (bildirime dayalı) bir yapı sunar.

NestJS temelde Controller, Service ve Modules üzerine kurulu bir yapıya sahiptir. Bu üç bileşen, NestJS’in modüler, ölçeklenebilir ve bakımı kolay yapısının temel taşlarını oluşturur. Bu üç yapıyı detaylandıralım:

1-) Controller

Örnek Controller Dosyası:

import { Controller, Get } from "@nestjs/common";

@Controller('cozumpark')
export class CozumParkController {

    @Get('posts')
    findAll(){
        return 'hello world!'
    }

}

Controller dosyasında bulunan Dekoratörler‘e biraz daha yakından bakalım.

1-) Service

Örnek Service Dosyası:

import { Injectable } from "@nestjs/common";

@Injectable()
export class CozumParkService {

    async findAll(){
        return 'hello world!'
    }

}

Yukarıda bir controller dosyamız bulunuyordu. Birde servis dosyamız olduğuna göre şimdi controller ile servis dosyamızı bağlayarak gelen isteği servise yönlendirecek şekilde yapılandırabiliriz. Öncelikle controller dosyamıza ilgili servis dosyamızı dahil etmemiz gerekmektedir. Bunu constructor ile yapacağız.

Controller ile Servis bağımlılığı:

Burada constructor ile beraber ilgili servisimizi controller’a dahil ettik ve “/” endpointine gelen isteklerimizi cozumparkService iletmiş olduk. constructor’a servis dahil ederken ilk yazdığımız takma adımız oluyor ikinci yazdığımız için ona karşılık gelecek servis adımız oluyor. Takma adı kısmına yine dilediğinizi verebilirsiniz fakat projenizi yönetebilmeniz açısından sonuna Service eklemeniz sizler için daha sağlıklı olacaktır.

import { Controller, Get } from "@nestjs/common";

@Controller('cozumpark')
export class CozumParkController {

    constructor(cozumparkService: CozumParkService){}

    @Get()
    findAll(){
        return this.cozumparkService.findAll()
    }

}

1-) Modules

Örnek Module Dosyası:

import { Module } from "@nestjs/common";
import { CozumParkController } from './cozumpark.controller';
import { CozumParkService } from './cozumpark.service';
@Module({
    imports:[],
    controllers:[CozumParkController],
    providers:[CozumParkService],
    exports:[]
})
export class CozumParkModule{}

Module dosyamızda 4 alan bulunmaktadır. imports, controllers, providers, exports. Tek tek bunları detaylandıralım:

İmports: Farklı bir modulü veya servisi dahil etmemizi sağlar.

controllers: Sadece kendi controller dosyasını dahil edilmesini ve tanımasını sağlar.

providers: Controller gibi, sadece kendi servisinin dahil edilmesini ve tanınmasını sağlar.

exports: Diğer servis ve modüller tarafından kullanılmasını istediğimiz servisimi ekleyebiliriz. Bu alana servis eklemediğimizde diğer modüller ve servisler burada bulunan servislere erişemezler.

Temel Yapı ve Akış

Bu üç temel bileşen sayesinde NestJS, hem modüler hem de bakımı kolay bir yapı sunar. Controller‘lar dışarıyla iletişim kurarken, Service‘ler iş mantığını içerir ve Modules‘lar projeyi organize eder. Bu yapı, uygulamanın büyüdükçe daha yönetilebilir ve sürdürülebilir olmasını sağlar.

Modül dosyasının diğer modüller tarafından tanınabilmesi için ve isteklerin işlenebilmesi için ana modül olan AppModule eklenmesi gerekir.

Tüm bu controller,service, modules gibi bileşenlerin elle manuel şekilde oluşturulabildiği gibi NestJS CLI ile oluşturulabilir.

CLI ile controller oluşturulması:

nest g controller CozumPark

CLI ile module oluşturulması:

nest generate module CozumPark

CLI ile service oluşturulması:

nest generate service CozumPark

Toplu oluşturulması

nest g resource users

NestJS’in temel yapı taşlarını bu şekilde görmüş olduk. Şimdi bir proje oluşturalım ve çalıştırma aşamasına geçelim.

Proje Oluşturma

NestJS projesi oluşturmak için öncelikle bazı temel araçları ve bağımlılıkları yüklememiz gerekir. Bunları global olarak yükleyebiliriz.

Öncelikle node ve npm kurulu olduğunu doğrulayalım:

node -v
npm -v

Node ve npm’in kurulu olduğunu doğruladıktan sonra NestJS’i global olarak kurabiliriz.

npm i -g @nestjs/cli

Kurduktan sonra nest new [name] şeklinde projemizi kurabiliriz.

Projemizi bu şekilde kurduktan sonra gerekli paketlerin indirilmesi gerekir.

ana dizinde yarn install veya npm install ile projemiz için gerekli paketleri indiriyoruz. Projemi çalıştırmak için yarn start:dev komutunu çalıştırmamız yeterli.

Projemiz 3000. port üzerinden çalışmaya başladı.

Yukarıda anlattığımız controller ve servisi daha iyi anlayabilmemiz açısından bir controller ve servis oluşturarak test gerçekleştirelim.

Controller dosyamız, service dosyamız, module dosyamız ve en sonda ise ana modülümüz olan app module dosyasına dahil olan CozumPark modulumuz bulunuyor.

Exit mobile version