Node.js/Node.js Doc

[Node.js - Express] 미들웨어(Middelware)란?

장일규 2022. 5. 8. 22:18

미들웨어란?

미들웨어(Middleware)는 클라이언트의 요청(req)서버의 응답(res) 사이에서 실행되는 중간 함수다.

이 함수는 next()라는 키워드를 통해 다음 미들웨어로 흐름을 넘길 수 있고, 개발자가 요청-응답 주기 사이에 원하는 로직을 삽입하거나 흐름을 제어할 수 있게 해준다.

쉽게 말해, 요청과 응답 사이에 끼어들어 이것저것 할 수 있는 애다.


미들웨어(Middleware) 종류

Express에서 사용되는 미들웨어는 다음과 같은 종류가 있다.

  • Application-level (어플리케이션 수준)
    • app.use()나 app.get() 등으로 전역적으로 적용하는 미들웨어
  • Router-level (라우터 수준)
    • express.Router()를 이용해 특정 라우터에서만 동작하게 등록하는 미들웨어
  • Error-handling (오류 처리)
    • 함수 인자로 err가 포함된 (err, req, res, next) 형태의 미들웨어로, 에러가 발생했을 때만 실행됨.
  • Built-in (내장)
    • Express에서 기본으로 제공하는 미들웨어. 예: express.static()
  • Third-Party (제3자)
    • npm 등으로 설치해 사용하는 미들웨어. 예: morgan, cors, body-parser 등.

미들웨어 함수의 역할

미들웨어 함수는 아래와 같은 작업을 수행할 수 있다.

  • 모든 코드 실행 가능
  • 요청(req) 또는 응답(res) 객체 수정
  • 요청-응답 주기를 조기 종료 (예: 응답 직접 보내기)
  • 다음 미들웨어로 흐름 전달 (next() 호출)

예시:

function checkMethod(req, res, next) {
  if (req.method === 'GET') {
    return res.send('GET 요청은 거절함');
  } else {
    next(); // 다음 미들웨어로 넘어감
  }
}

위 예제처럼 next()를 호출하면 다음 미들웨어가 실행됨. 호출하지 않으면 거기서 끝남.


미들웨어 등록과 실행

Express에서는 app.use() 메서드를 사용해 미들웨어를 등록한다.
중요한 건 등록 순서가 실행 순서라는 것. 먼저 등록된 미들웨어가 먼저 실행된다.

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const homeRouter = require('./routes/home');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', homeRouter);

위처럼 여러 미들웨어를 순차적으로 등록할 수 있으며, 각각은 등록된 순서대로 실행된다.

 

'Node.js > Node.js Doc' 카테고리의 다른 글

[Node.js] MongoDB 연동하기  (0) 2022.05.10
MongoDB 무료로 사용하기(MongoDB Atlas)  (0) 2022.05.10
라우터 분리하기  (0) 2022.05.08
[Node.js] bodyparser 미들웨어 사용하기  (0) 2022.05.08
[Node.js] Basic routing  (0) 2022.05.08