[node.js] Express MiddleWare

JeeHyeok Lee·2022년 1월 2일
0

MiddleWare

middleWare는 express에서 가장 중요한 개념중 하나이다. express는 http의 기본적인 모듈을 사용해서 웹 서비스를 만들 때 보다는 훨씬 빠르게 여러가지 작업을 할 수 있도록 많은 프리셋들을 제공한다. 주로 사용하는 작업들을 위한 많은 middleware가 제공되고 이것들을 잘 사용하기만 하면 여러 요청에 대해서 쉽게 대응을 할 수 있다. middleware가 어떻게 동작하는지 이해하는 것이 express를 이해하는 가장 첫 단계라고 할 수 있다.

middleware는 express가 실행되면서 request가 들어왔을 때 해당 request가 응답되어 나갈 때 까지 거치는 모든 함수를 뜻한다고 생각하면 된다.

간단한 예제

const express = require('express')

const app = express() // 앱 생성

const PORT = 5000

app.use(
  '/',
  (req, res, next) => {
    console.log('Middleware 1')

    setTimeout(() => {
      next() // 1초 뒤 next 호출
    }, 1000)
  },
  (req, res, next) => {
    console.log('Middleware 1-2')
    next()
  }
)

app.use((req, res) => {
  console.log('Middleware2')
  res.send('Hello, express!')
})
// 포트 설정
app.listen(PORT, () => {
  console.log(`The Express server is listening at port: ${PORT}`)
})

여기서 호출되는 함수들을 middleware라고 볼 수 있다.

middleware는 순차적으로 실행되기 때문에 다음 middleware로 넘겨주기 위해서는
next()를 호출하여 넘겨주어야 한다.

middleware에서는 연속된 함수 사이에서 앞선 함수의 결과를 넘겨주는 경우가 자주 발생하는데

const express = require('express')

const app = express() // 앱 생성

const PORT = 5000

app.use('/', (req, res, next) => {
  const requestedAt = new Date() // 요청이 발생한 시점
  console.log('Middleware 1')
  req.requestedAt = requestedAt // req 객체를 이용해 값을 넘겨줌
  next()
})

app.use((req, res) => {
  console.log('Middleware2')
  res.send(`Hello, express! : at  ${req.requestedAt} `)
})
// 포트 설정
app.listen(PORT, () => {
  console.log(`The Express server is listening at port: ${PORT}`)
})

req 객체를 사용하면 다음 middleware에 원하는 값을 넘겨주는 것도 가능하다.
이 예제에서는 요청이 발생한 시점을 req 객체를 사용해서 넘겨주었다.

0개의 댓글