Nest.JS (1)기본 구조

Seong·2022년 11월 15일
0

Nest.js

목록 보기
1/9
post-thumbnail

Nest.js 공식문서

Nest.JS Set Up 하기

nestjs 설치

npm i -g @nestjs/cli     //nest 전역 설치

nest new project-name //nest로 새로운 프로젝트 생성

공식문서에 나온 기본적인 파일 개요

app.controller.ts 단일 경로가 있는 기본 컨트롤러.
app.controller.spec.ts 컨트롤러에 대한 단위 테스트입니다.
app.module.ts 응용 프로그램의 루트 모듈입니다.
app.service.ts 단일 메서드를 사용하는 기본 서비스입니다.
main.ts 핵심 기능 NestFactory을 사용하여 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일입니다.

컨트롤러

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

컨트롤러 기본구조

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();   //appService의 getHello()를 받음
  }
}

데코레이터에 경로를 넣는다 ex)@Controller('hello') 같이 경로접수사넣는것도 가능

Request object

데코레이터를 추가하여 Request object 를 받을 수 있다.

  @Get()
  getHello(@Req() req : Request,@Body() body,): string {
    if(req.body === body) console.log(req.body===body) ;
    return this.appService.getHello();
  }

공식문서 데코레이터 목록
@Request(), @Req() req
@Response(), @Res()* res
@Next() next
@Session() req.session
@Param(key?: string) req.params/req.params[key]
@Body(key?: string) req.body/req.body[key]
@Query(key?: string) req.query/req.query[key]
@Headers(name?: string) req.headers/req.headers[name]
@Ip() req.ip
@HostParam() req.hosts

Service

실제 비즈니스 로직이 구현되는 공간
Service를 Controller에서 사용하려면 의존성 주입이 필요하다.

Provider

Nest의 기본개념으로 서비스,리포지토리,팩토리,헬퍼등을 프로바이더로 취급 할 수 있다.

nest js의 의존성 주입은 Controller에서 실행된다.

export class AppController {
  constructor(private readonly appService: AppService) {}
  
  ...이하코드 생략
 }

접근 제한자를 생성자 파라미터에 선언하면 암묵적으로 클래스 프로퍼티로 선언됨(타스 할때 배움)

dotEnv

 npm i @nestjs/config

그후 app.module.ts에서 imports 안에 ConfigModule.forRoot() 를 입력한다.

import { ConfigModule } from '@nestjs/config';


@Module({
  imports: [ConfigModule.forRoot()],
  controllers: [],
  providers: [],
})
profile
메모장

0개의 댓글