lflov

Nest 초기세팅 & Controller 본문

Nest

Nest 초기세팅 & Controller

마젠토브힘내부왕 2022. 12. 19. 19:43

모든건 공식문서에 있는 내용으로 진행해요

 

Documentation | NestJS - A progressive Node.js framework

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac

docs.nestjs.com

 

Nest 파일 만드는법

  1. npm i -g @nestjs/cli

→ nest js설치 명령어

 

2. nest new project-name

 

→ nestjs는 프레임위크인 만큼 정해진 틀이 있다 그 틀을 가져오는 명령어이다

→ project-name에 프로젝트이름을 임의로 작성해준다.

 

 

그럼 vscode 터미널에 이렇게 나오면서 Nest에서 만든 파일들의 틀이 나온다

 

그리고 어떤 패키지 매니저를 사용할것인지 정하는 항목도 나오는데 공식문서에서 npm을 사용하고 있어서 npm으로 해보았다.

 

Nest 파일들 설치 완료

app.controller.ts를 보면

 

app.controller.ts

이렇게 나오는데 여기서 

 

@데코레이터 라고 한다 이것은 아래 클래스 또는 함수에 해당 기능을 넣어준다는 의미를 가지고 있다.

 

컨트롤러(controller)

컨트롤러의 목적은 애플리케이션에 대한 특정 요청을 수신하는 것입니다. 라우팅 메커니즘 은 어떤 컨트롤러가 어떤 요청을 받는지 제어합니다. 종종 각 컨트롤러에는 둘 이상의 경로가 있으며 다른 경로는 다른 작업을 수행할 수 있습니다.

기본 컨트롤러를 만들기 위해 클래스와 데코레이터 를 사용 합니다. 데코레이터는 클래스를 필수 메타데이터와 연결하고 Nest가 라우팅 맵을 생성할 수 있도록 합니다(요청을 해당 컨트롤러에 연결).

 

-> 컨트롤러는 들어오는 요청 을 처리 하고 클라이언트에 응답 을 반환 하는 역할을 합니다.

-> express에서의 layered pattern 된 controller와 비슷한 기능이다. ( 요청을 수신하는 곳 )

-> express에서의 layered pattern 된 routes들의 기능도 가지고 있다.

 

컨트롤러에서의 라우팅

 

기본 컨트롤러를 정의하는 데 필요한@Controller() 데코레이터를 사용합니다. 선택적 경로 경로 접두사를 지정합니다 . 데코레이터 에서 경로 접두사를 사용하면 관련 경로 집합을 쉽게 그룹화하고 반복 코드를 최소화할 수 있습니다. 

 

예를 들어 경로 아래에서 고객 엔터티와의 상호 작용을 관리하는 일련의 경로를 그룹화하도록 선택할 수 있습니다 . 이 경우 파일의 각 경로에 대해 경로의 해당 부분을 반복할 필요가 없도록 데코레이터 에 경로 접두사 를 지정할 수 있습니다.

 

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

@Controller('cats')
export class CatsController {
  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}

 

 @Controller('cats')의 'cats'는 express routes 의 index.js의 기능( 라우터의 대분류 ) 기능을 의미한다.

@Get() 데코레이터는 HTTP 메소드 ( get post put patch delete )중 get을 하는 엔드포인트 기능을 넣어준다는 의미이다.

express routes의 catRouter.js와 같은 라우터의 소분류 기능을 의미한다. 

-> @Get('sham') 이런식으로 작성하면 해당 엔드포인트는 GET /cats/sham 이렇게 적용이 된다.