Module
- 애플리케이션의 기능과 관련된 컴퍼넌트를 구조화 하는대 사용한다.
- '@Module' 데코레이터를 사용하여 정의한다.
- provider(service,repository), controller, module 등을 포함할 수있다.
모듈 만들기
- nest g module [모듈명]
nest g module vocas
Controller
- 클라이언트의 요청을 처리하고 응답을 반환하는 역할을한다.
- '@Controller' 데코레이터에 경로를 지정하여 해당 컨트롤러의 라우팅 경로를 설정
- Handler : @Get, @Post, @Delete등의 데코레이터를 사용하여 요청 메서드를 지정한다.
- 비지니스 로직을 구현하고 Service를 호출하여 데이터 조작 및 비지니스 로직을 처리한다.
- Module의 controllers에 등록해서 사용한다.
controller 만들기
- nest g controller [컨트롤러명]
nest g controller vocas
Service
- 비지니스 로직을 구현하고, 데이터 조작, 외부 api 호출등 같은 작업을 처리하는 클래스
- Controller에서 호출되어 컨트롤러와 데이터베이스, 외부 리소스 사이의 상호작용을 한다.
- '@Injectable' 데코레이터를 사용하여 정의
- Module의 providers에 등록해서 사용한다.
service 만들기
- nest g service [서비스명]
nest g service vocas
Provider
- 의존성 주입을 위해 사용되는 클래스이다.
- '@Injectable' 데코레이터를 사용하여 정의한다.
- 주로 service,repository,factory,외부 api 등을 나타낸다.
Example
app에 Module에 Module 등록 예시
ex) app.module.ts
...
@Module({
imports: [VocasModule],
controllers: [],
providers: [],
})
export class AppModule {}
Module에 Contorller,service 등록 예시
ex) vocas.module.ts
...
@Module({
controllers: [VocasController],
providers: [VocasService],
})
export class VocasModule {}
Controller 예시
ex) vocas.controller.ts
- 생성자에 private 접근 제한자 사용시 암묵적으로 클래스 프로퍼티로 선언된다.
...
@Controller('vocas')
export class VocasController {
// 생성자에 private 접근 제한자 사용시 암묵적으로 클래스 프로퍼티로 선언된다.
constructor(private vocasService: VocasService) {}
@Get('/')
getAllVocase(): Promise<GetAllVocasResponse> {
...
return this.vocasService.getAllVocas();
}
...
}
Service 예시
ex) vocas.service.ts
...
@Injectable()
export class VocasService {
....
async getAllVocas(): Promise<GetAllVocasResponse> {
...
return vocas;
}
...
}
'NestJS' 카테고리의 다른 글
[NestJS] Pipe란? Pipe Validation Example (0) | 2023.07.21 |
---|---|
[Nest]NestJS란? Express 차이점, NestJS Start (0) | 2023.07.15 |