NestJS 서버에 사용자가 어떤 것을 요청하면 아래 과정을 거쳐 처리한다.
부가적인 부분과 실제 요청 처리 부분이 나뉘는 이유
인증, 보안, 예외처리, 로그 등 서버를 운영하면서 반드시 필요하지만, 실제 업무 처리 절차와 연관이 없는 부분을 매번 구현하기 보다, 한 번 구현 후 재사용 하는 것이 좋기 때문이다.
왜 이렇게 복잡하게 나누는가?
객체지향 프로그래밍의 원칙 중 하나인 단일 책임 원칙에 의해 각각의 객체는 하나의 책임만 가지도록 설계한다.
각각의 구성요소가 하는 일
Controller와 Service 이외에는 직접 구현하는 일이 많지 않다.
다른 구성요소들은 보통 이미 구현된 것들을 가져다 쓴다.
- Middleware : 미들웨어는 보통 3자 라이브러리를 의미하고, 다른 스키매틱이 하는 일을 할 수도 있고, 이외의 일을 할 수도 있다.
- Guard : 인증과 권한 관리. 클라이언트의 요청이 라우팅을 활성화 할 수 있는지 여부를 결정합니다.
- Interceptor : 요청 혹은 응답에서 필요한 추가적인 부분 담당
- Pipe : 데이터 유효성 검증 및 데이터 변환
- Controller : 라우팅
- Service : 실제 요청을 처리하는 부분
- Exception filter : 요청 처리 중 발생하는 오류에 대한 예외 처리
각각의 구성요소가 어떤 일을 하는지 미리 정해져 있으면 문제가 발생했을 때, 어떤 구성요소에서 문제가 발생했는지 파악하기 쉽다.
'NestJS > NestJS 문서화' 카테고리의 다른 글
컨트롤러 (0) | 2025.04.23 |
---|---|
모듈 (0) | 2025.04.23 |
NestJS 프로젝트 기본 구조 (0) | 2025.04.14 |
Nest CLI (0) | 2025.04.14 |
NestJS란 (0) | 2025.04.14 |