🛠️NestJS의 lifecycle
요청이 왔을 때 NestJS에서의 lifecycle을 보면 다음과 같다.
1. Requset
2. Middleware
2.1. Globally bound middleware
2.2. Module bound middleware
3.Guards
4. Interceptor(컨트롤러 앞단)
4.1. Golbal interceptor
4.2 Controller interceptor
4.3 Route interceptor
5. Pipes
6. Controller(method handler)📌 오늘 공부할 내용
7. Service(존재한다면)
8. Interceptor(컨트롤러 뒷단)
8.1. Route interceptor
8.2 Controller interceptor
8.3 Global interceptor
9. Exception
9.1. Route
9.2. Controller
9.3. Global
10. Server response
controller란?
컨트롤러는 들어오는 요청을 처리 하고 클라이언트에 응답을 반환하는 역할을 한다.
ex )
import { Controller, Get } from '@nestjs/common';
@Controller('cats') // 기본 URL 경로를 지정
export class CatsController {
@Get() // GET /cats 요청 처리
findAll(): string {
return 'This action returns all cats';
}
@Get('detail') // GET /cats/detail 요청 처리
findDetail(): string {
return 'This action returns cat details';
}
}
이런식으로 자바의 어노테이션처럼 데코레이터 라는 것들을 붙여 사용할 수 있고
구조는 거의 비슷하다.
동작 방식을 비교해 보겠다.
스프링 JPA
- 요청(GET /cats)이 들어오면 디스패처 서블릿이 처리
- 디스패처 서블릿이 요청을 컨트롤러의 메서드(findAll)에 매핑
- findAll 메서드가 실행되어 응답을 반환
- 일반적으로 비즈니스 로직은 서비스 계층에서 처리하고, 데이터 접근은 JPA 리포지토리를 통해 이루어짐
NestJS
- 요청(GET /cats)이 들어오면 NestJS의 라우팅 모듈이 이를 처리
- 요청이 CatsController의 findAll 메서드에 매핑
- findAll 메서드가 실행되어 응답을 반환
- 비즈니스 로직은 서비스 계층에서 처리하며, 데이터베이스 작업은 TypeORM, Prisma 등을 통해 이루어질 수 있다.
'NestJS' 카테고리의 다른 글
[NestJS] Middleware (0) | 2024.11.21 |
---|---|
[NestJS] Provider, Module (0) | 2024.11.20 |
[Express] 라우터 분리, 모듈화 (0) | 2024.11.14 |
[Express] CRUD 기능 만들기 (0) | 2024.11.14 |
[Express] 라우팅과 미들웨어 (1) | 2024.11.14 |