미들웨어란?
미들웨어(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 |