[NestJs]Day1 기본 구조와 개념

nestjs의 시작

nestjs는 main.ts 파일에서 시작한다.

// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

그리고 하나의 모듈에서 애플리케이션을 생성하는 것을 볼 수 있다.

module 파일을 들여다 보면 아래와 같다.

// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

AppModule에는 AppControllerAppService가 있다. NestJs는 Controller와 비즈니스 로직을 분리하고 싶어한다.

// controller
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();
  }

  @Get('/hello')
  sayHello(): string {
    return this.appService.getHi();
  }
}
// service
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }

  getHi(): string {
    return 'Hi nest';
  }
}

위와 같이 작성하고 http://localhost:3000/hello에 접속해보자. Hi nest가 출력되는 것을 확인할 수 있다.