Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자료구조
- class
- cookie
- JavaScript
- dfs
- MongoDB
- Python
- Sequelize
- 공룡게임
- TypeScript
- react
- Bull
- 정렬
- 게임
- MySQL
- typeORM
- Nest.js
- Dinosaur
- game
- flask
- jest
- GIT
- mongoose
- nodejs
- OCR
- nestjs
- AWS
- Queue
- Express
Archives
- Today
- Total
포시코딩
4월6일 - Nest.js의 Request lifecycle 본문
728x90
Nest.js에서 request 요청에 대해 어떤 흐름을 갖는지 파악해보자.
내 나름대로 한글 설명도 덧붙여봤다.
- Incoming request
요청 들어옴 - Globally bound middleware
앱 전체에서 공통으로 사용될 미들웨어가 등록되어 있는 경우, 이 단계에서 실행 - Module bound middleware
해당 모듈에서만 사용될 미들웨어가 등록되어 있는 경우, 이 단계에서 실행 - Global guards
앱 전체에서 사용될 가드(guard)가 등록되어 있는 경우, 이 단계에서 실행 - Controller guards
해당 컨트롤러에서만 사용될 가드가 등록되어 있는 경우, 이 단계에서 실행 - Route guards
해당 라우트(route)에서만 사용될 가드가 등록되어 있는 경우, 이 단계에서 실행 - Global interceptors (pre-controller)
앱 전체에서 사용될 인터셉터가 등록되어 있는 경우, 이 단계에서 컨트롤러 호출 전 실행 - Controller interceptors (pre-controller)
해당 컨트롤러에서만 사용될 인터셉터가 등록되어 있는 경우, 이 단계에서 컨트롤러 호출 전 실행 - Route interceptors (pre-controller)
해당 라우트에서만 사용될 인터셉터가 등록되어 있는 경우, 이 단계에서 컨트롤러 호출 전 실행 - Global pipes
앱 전체에서 사용될 파이프가 등록되어 있는 경우, 이 단계에서 실행 - Controller pipes
해당 컨트롤러에서만 사용될 파이프가 등록되어 있는 경우, 이 단계에서 실행 - Route pipes
해당 라우트에서만 사용될 파이프가 등록되어 있는 경우, 이 단계에서 실행 - Route parameter pipes
라우트 파라미터에서 사용될 파이프가 등록되어 있는 경우, 이 단계에서 실행 - Controller (method handler)
해당 컨트롤러에서 요청에 대한 처리를 하는 핸들러 실행 - Service (if exists)
컨트롤러에서 서비스를 사용하는 경우, 이 단계에서 해당 서비스의 메서드가 실행 - Route interceptors (post-request)
해당 라우트에서만 사용될 인터셉터가 등록되어 있는 경우, 이 단계에서 컨트롤러 호출 후 실행 - Controller interceptor (post-request)
해당 컨트롤러에서만 사용될 인터셉터가 등록되어 있는 경우, 이 단계에서 컨트롤러 호출 후 실행 - Global interceptor (post-request)
앱 전체에서 사용될 인터셉터가 등록되어 있는 경우, 이 단계에서 컨트롤러 호출 후 실행 - Exception filters (route, then controller, then global)
요청 처리 중 예외 발생 시 해당 예외 필터가 등록되어 있는 순서대로 실행
해당 라우트 -> 해당 컨트롤러 -> 앱 전체
순으로 등록된 필터가 실행된다. - Server response
클라이언트로 응답 반환
출처: 공식문서
우리가 보통 request를 받아 처리하는 controller에 오기까지도 상단히 많은 과정을 거치는 것을 알 수 있다.
과정이 어려워도 자세히 보면 공통점이 보이는데
글로벌(앱 전체) -> 컨트롤러 -> 라우트 순서대로 실행되는 부분이다.
그리고 과정을 크게 나누면
요청 -> 미들웨어 -> 가드 -> 인터셉터 -> 파이프 -> 메서드 실행 -> 인터셉터 -> 예외 필터 -> 응답
이렇게 되겠다.
인터셉터는 컨트롤러 호출 전, 호출 후 두번 호출된다는 점을 기억하면 더 이해하기 쉬울 것이다.
728x90
'TIL' 카테고리의 다른 글
4월8일 - 재귀 vs 반복문 (0) | 2023.04.08 |
---|---|
트랜잭션(Transaction)의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) (0) | 2023.04.06 |
4월5일 - RabbitMQ, Kafka (0) | 2023.04.05 |
4월4일 - 메시지 큐와 브로커 (0) | 2023.04.05 |
4월1일 - [React] useState, useRef, redux의 state 비교 (0) | 2023.04.02 |