Middleware
info
Node.js를 기반으로 설명한다.
미들웨어란,
Request
및Response
객체에 접근할 수 있는 함수 혹은 클래스로, Express.js 에서는next
라고 하는 함수와 함께 사용된다. Express.js 자체가 미들웨어와 라우터를 기반으로 한 프레임워크이기도하다.
Middleware 종류
미들웨어는 다음의 종류로 나뉜다.
- Application-level Middleware
app.use('/', (req, res, next) => next())
app.get('/', (req, res, next) => next())
- ...
- Router-level Middleware
router.use('/', (req, res, next) => next())
router.get('/', (req, res, next) => next())
- ...
- Error-handling Middleware
app.use('/', (error, req, res, next) => next(error))
- Built-in Middleware
express.json()
express.static()
express.urlencoded()
- ...
- Third-party Middleware
app.use(cookieParser())
- ...
Middleware 특징
미들웨어는 선언한 순서대로 실행된다는 특징이 있다. 예를 들어, 예외 처리를 제외한 미들웨어의 경우, next()
함수 호출을 통해 다음 미들웨어가 실행된다. 만약 미들웨어가 next()
함수를 호출하지 않을 경우, 요청은 다음 미들웨어로 넘어가지 않고 대기상태에 있게 된다. (별도의 종료 응답이 없는 한, 요청이 종료되지 않는다.)
그리고 Router-level Middleware의 경우, 해당 경로에 대한 요청이 있을 때에만 실행이 된다.