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) { .... }