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 |
Tags
- 공룡게임
- TypeScript
- class
- nodejs
- Sequelize
- Python
- Queue
- Nest.js
- JavaScript
- MongoDB
- OCR
- game
- jest
- AWS
- GIT
- flask
- nestjs
- MySQL
- Dinosaur
- mongoose
- dfs
- Express
- 정렬
- 게임
- 자료구조
- cookie
- Bull
- typeORM
- react
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
클라이언트로 응답 반환
출처: 공식문서
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea
docs.nestjs.com
우리가 보통 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 |