[Nestjs] #2. 기본 구조 다지기

exoluse·2021년 11월 30일
1

Nestjs

목록 보기
2/7
post-thumbnail

다시 프로젝트 생성

nest 명령어가 먹지 않을 때에는 npx 로 해결하자.

npx @nestjs/cli new nestjs-test

또는

nest new nestjs-test

이렇게 만들어진다.

다시 폴더 내부 탐방

src 폴더의 main.ts, app.module 제외하고 모두 삭제

요렇게 만든다.

삭제한 파일들을 참조하는 소스 삭제

@Module 부분을 저렇게 비워놓는다.

[app.module.ts]

import { Module } from '@nestjs/common';

@Module({
  imports: []
})
export class AppModule {}

비웠으면 채우기 - Module

새로운 모듈을 만들자

  1. 모듈명은 product 라고 하겠다.
npx @nestjs/cli g module product

  1. src 폴더는 이런 모양새가 된다.

  2. 생성된 product.module.ts

import { Module } from '@nestjs/common';

@Module({})
export class ProductModule {}
  1. 수정된 app.module.ts
import { Module } from '@nestjs/common';
import { ProductModule } from './product/product.module';

@Module({
  imports: [ProductModule]
})
export class AppModule {}

비웠으면 채우기 - Controller

컨트롤러 만들기

--no-spec 옵션은 테스트 파일을 만들지 않는 옵션이다.

npx @nestjs/cli g controller product --no-spec

컨트롤러 파일이 생성되었다.

모듈파일 자동 업데이트

product.module.ts 파일의 @Module 부분에 컨트롤러가 추가된 느낌적인 느낌

import { Module } from '@nestjs/common';
import { ProductController } from './product.controller';

@Module({
  controllers: [ProductController]
})
export class ProductModule {}

비웠으면 채우기 - Service

서비스 만들기

--no-spec 옵션은 테스트 파일을 만들지 않는 옵션이다. 뭔가 컨트롤러와 비슷한 느낌으로 만든다.

npx @nestjs/cli g service product --no-spec

굿잡.

모듈파일 자동 업데이트

product.module.ts 파일의 @Module 부분에 서비스가 추가된 느낌적인 느낌

import { Module } from '@nestjs/common';
import { ProductController } from './product.controller';
import { ProductService } from './product.service';

@Module({
  controllers: [ProductController],
  providers: [ProductService]
})
export class ProductModule {}

이제부터 스프링 Nestjs 시작이다.

컨트롤러에 productService 의존성 추가

[product.controller.ts]

import { Controller } from '@nestjs/common';
import { ProductService } from './product.service';

@Controller('product')
export class ProductController {

    constructor(private productService:ProductService) {
        
    }
}

서비스에 구체적으로 기술

[product.service.ts]

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

@Injectable()
export class ProductService {

    private productList = ["iPhone", "iPad", "iPad Pro"];

    getProduct(){
        return this.productList;
    }
}

컨트롤러 수정

[product.controller.ts]

import { Controller, Get } from '@nestjs/common';
import { ProductService } from './product.service';

@Controller('product')
export class ProductController {

    constructor(private productService:ProductService) {
    }

    @Get("/getProduct")
    getProduct(){
        return this.productService.getProduct();
    }

}

실행해 보자

npm run start:dev 

확인

혼자서 좀더 파본 결과

Nestjs가 알아서 해주는 부분이 많고 꽤 스무스하게 예제를 만들어 볼 수 있었다. 가급적 보일러플레이트를 이용해야 할 것 같은 느낌도...

0개의 댓글