NestJs - Request LifeCycle
NestJs - Request LifeCycle
Request LifeCycleโ
Nest๋ Request LifeCycle
๋ผ๊ณ ํ๋ ์์์ ๋ฐ๋ผ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ์์ฑํ๋ค. Middleware
, Pipes
, Guards
๋ฐ Interceptors
๋ฅผ ์ฌ์ฉํ๋ฉด Global
, Controller
, Route Handler
๊ฐ ์๋ํ ๋ Request LifeCycle
๋์ ํน์ ์ฝ๋๊ฐ ์คํ๋๋ ์์น๋ฅผ ์ถ์ ํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์๋ค. ์ผ๋ฐ์ ์ธ ์์ฒญ์ Middleware
๋ฅผ ํตํด Guards
, Interceptors
, Pipes
, API์ Interceptors
๋ก ์ด๋ํ๋ค.
Middlewareโ
Nest๋ ์ ์ญ์ ์ผ๋ก ๋ฐ์ธ๋ฉ๋ Middleware
( ex. app.use()
๋ก ๋ฐ์ธ๋ฉ๋ Middleware
)๋ฅผ ์คํํ ๋ค์ ๊ฒฝ๋ก์์ ๊ฒฐ์ ๋๋ ๋ชจ๋ ๋ฐ์ธ๋ฉ Middleware
๋ฅผ ์คํํ๋ค. Middleware
๋ Express
์ Middleware
์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ๋ฐ์ธ๋ฉ๋ ์์๋๋ก ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค. ์๋ก ๋ค๋ฅธ ๋ชจ๋์ ๋ฐ์ธ๋ฉ๋ Middleware
์ ๊ฒฝ์ฐ ๋ฃจํธ ๋ชจ๋์ ๋ฐ์ธ๋ฉ๋ Middleware
๊ฐ ๋จผ์ ์คํ๋ ๋ค์ ๋ชจ๋์ด imports ๋ฐฐ์ด์ ์ถ๊ฐ๋ ์์๋๋ก Middleware
๊ฐ ์คํ๋๋ค.
Guardsโ
Guards
์คํ์ Global Guards
๋ก ์์ํ์ฌ Controller Guards
๋ก ์งํ๋๊ณ ๋ง์ง๋ง์ผ๋ก Route Guards
๋ก ์งํ๋๋ค. Middleware
์ ๋ง์ฐฌ๊ฐ์ง๋ก Guards
๋ ๋ฐ์ธ๋ฉ๋ ์์๋๋ก ์คํ๋๋ค.
Interceptorsโ
๋๋ถ๋ถ์ Interceptors
๋ Guards
์ ๋์ผํ ํจํด์ ๋ฐ๋ฅด์ง๋ง ํ ๊ฐ์ง๊ฐ ๋ค๋ฅด๋ค. Interceptors
๊ฐ RxJS Observable
์ ๋ฐํํ๋ฏ๋ก Observable
์ ์ฒ์ ๋ค์ด์จ ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ์ธ๋ฐ์ด๋ ์์ฒญ์ ์ ์ญ, Controller
, Route
์์ค์ ํ์ธ์ ๊ฑฐ์น์ง๋ง ์์ฒญ์ ์๋ต์ด Controller
, Method handler
์์ ๋ฐํ๋ ํ, Route
์์ Controller
, Global
์์ผ๋ก ํ์ธํ๋ค. Pipes
, Controller
๋๋ Service
์์ ๋ฐ์ํ๋ ๋ชจ๋ ์ค๋ฅ๋ Interceptors
์ catchError
์ฐ์ฐ์์์ ์ฝ์ ์ ์๋ค.
Pipesโ
ํ์ดํ๋ @UsePipes()
๋งค๊ฐ๋ณ์์ ๊ด๋ จํ์ฌ ๋์ผํ FIFO
๋ฐฉ์์ผ๋ก Controller
์ ๋ํ ํ์ค ์ ์ญ์ ๋ฐ๋ผ ๋ฐ์ธ๋ฉ๋ ์ํ์ค๋ฅผ ๋ผ์ฐํ
ํ๋ค. ๊ทธ๋ฌ๋ Routing Param
์์ ์คํ ์ค์ธ ํ์ดํ๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ํ์ดํ๋ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ถํฐ ๋ง์ง๋ง ๋งค๊ฐ๋ณ์์ ์์๋ก ์คํ๋๋ค. ์ด๋ Route
๋ฐ Controller
ํ์ดํ์๋ ์ ์ฉ๋๋ค.
Filtersโ
ํํฐ๋ ์ ์ญ์ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง ์๋ ์ ์ผํ ๊ตฌ์ฑ ์์์ด๋ค. ํํฐ๋ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋ฎ์ ์์ค์์๋ถํฐ ํ์ธํ๋ค. ๋ชจ๋ Route
์ ๋ฐ์ธ๋ฉ๋ ํํฐ, Controller
์์ค, ๋ง์ง๋ง์ผ๋ก ์ ์ญ ์์ค ํํฐ๋ก ์งํ๋๋ค. ์์ธ๋ ํํฐ์์ ํํฐ๋ก ์ ๋ฌ๋ ์ ์๋ค. Route
์์ค ํํฐ๊ฐ ์์ธ๋ฅผ ํฌ์ฐฉํ๋ ๊ฒฝ์ฐ, Controller
๋๋ ์ ์ญ ์์ค ํํฐ๋ ๋์ผํ ์์ธ๋ฅผ ํฌ์ฐฉํ ์ ์๋ค. ํํฐ์์ ํํฐ๋ก ์์ธ๋ฅผ ์ ๋ฌํ๋ ๊ฒ๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ๋ด๋ ๋ฐฉ๋ฒ์ ํํฐ ๊ฐ์ ์์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
Request LifeCycle - 1 ์ฌ์ดํดโ
- Incoming request
- Middleware
- 2.1. Globally bound middleware
- 2.2. Module bound middleware
- Guards
- 3.1 Global guards
- 3.2 Controller guards
- 3.3 Route guards
- Interceptors (pre-controller)
- 4.1 Global interceptors
- 4.2 Controller interceptors
- 4.3 Route interceptors
- Pipes
- 5.1 Global pipes
- 5.2 Controller pipes
- 5.3 Route pipes
- 5.4 Route parameter pipes
- Controller (method handler)
- Service (if exists)
- Interceptors (post-request)
- 8.1 Route interceptor
- 8.2 Controller interceptor
- 8.3 Global interceptor
- Exception filters
- 9.1 route
- 9.2 controller
- 9.3 global
- Server response