서버사이드/NodeJS

Nestjs 따라잡기 2

Dohoon 2024. 8. 18. 23:20

Module

  • 모듈 기반 구조
  • Root이 기본 생성된 모듈을 root에 import 하여 사용
  • 모듈 구조
    • controller
    • provider
  • client -> Controller -> provider -> Controller -> client

소스 Generator

  • 소스 자동 생성 Generator 존재
  • Angular의 Generator와 똑같은 기능 수행
  • Moduel,Controller,Service등을 생성 가능
  • 모듈 추가
    • 터미널 > nest g module users
    • src/user/ , users.modules.ts 생성
  • 컨트롤러 추가
    • 터미널 > nest g controller users
    • src/user/users.controller.ts : 생성, path 추가
    • src/user/users.modules.ts : 업데이트 컨트롤러 지정
  • 서비스 추가
    • 터미널 > nest g service users
    • src/user/users.service.ts : 생성, Injectable( DI)
    • src/user/users.modules.ts : 업데이트 프로바이더 지정

Controller

  • request를 받아 response 처리 역활
  • 라우팅에 따라 Controller 호출
  • @Controller() 데코레이션 사용
    • () 안에는 path 지정
    • ex : @Controller('dogs') -> http://localhost:3000/dogs
  • @Get, @Post,@Put, @Delete 사용 가능
    • @Get('profile') -> http://localhost:3000/dogs/profile
  • Method 옆에 response 형식 정의
    • ex :  bark(): string { ... }
  • Request 객체
    • express request 객체 사용 가능
    • ex : bark(@Req() resquest: Request): string { ... }
  • Route parameters
    • 동적 라우팅을 위해서는 매개변수를 ':'과 함께 사용 가능
      • @Get(':id') -> http://localhost:3000/dogs/1000
    • 매개변수 추출
      • bark(@Param('id') id: string ): string { ... }
  • 비동기 처리
    • async bark(): Promise<any[]> { ..... }
  • post body DTO
export class InitDogDto {
	name: string;
	age: number;
}

@Post()
async bark(@Body() initdotDto: InitDogDto) { .... }