Express 애플리케이션에서 사용자 정의 미들웨어 만드는 방법
Express에서 미들웨어는 요청과 응답 사이에서 실행되는 함수들로, 애플리케이션의 요청 처리 파이프라인에 중간 단계를 추가할 수 있습니다. 사용자 정의 미들웨어를 통해 로깅, 인증, 데이터 처리 등 다양한 작업을 수행할 수 있으며, 이를 통해 애플리케이션의 기능을 유연하게 확장할 수 있습니다.
미들웨어의 기본 구조
미들웨어 함수는 세 가지 파라미터를 받습니다: 요청 객체(req), 응답 객체(res), 그리고 다음 미들웨어 함수로 넘어가기 위한 next 함수입니다.
function myMiddleware(req, res, next) {
// 여기에 로직 작성
next();
}
사용자 정의 미들웨어 작성하기
1. 로깅 미들웨어 작성
로그를 남기는 미들웨어는 요청이 들어올 때마다 요청의 메소드와 URL을 콘솔에 출력합니다.
function loggingMiddleware(req, res, next) {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // 다음 미들웨어 또는 라우트 핸들러로 제어를 넘깁니다.
}
2. 인증 미들웨어 작성
단순한 인증 미들웨어 예제로, 요청 헤더에 특정 토큰이 있는지 검사하고, 토큰이 유효하지 않으면 403 에러를 응답합니다.
function authMiddleware(req, res, next) {
const { authorization } = req.headers;
if (authorization && authorization === "Secret Token") {
next(); // 인증 성공, 다음 미들웨어로 넘어갑니다.
} else {
res.status(403).send('인증 실패');
}
}
미들웨어 애플리케이션에 적용하기
작성한 미들웨어를 Express 애플리케이션에 적용하는 방법은 다음과 같습니다.
const express = require('express');
const app = express();
function loggingMiddleware(req, res, next) {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // 다음 미들웨어 또는 라우트 핸들러로 제어를 넘깁니다.
}
function authMiddleware(req, res, next) {
const { authorization } = req.headers;
if (authorization && authorization === "Secret Token") {
next(); // 인증 성공, 다음 미들웨어로 넘어갑니다.
} else {
res.status(403).send('인증 실패');
}
}
// 로깅 미들웨어를 애플리케이션 전체에 적용합니다.
app.use(loggingMiddleware);
// 인증 미들웨어를 특정 라우트에만 적용합니다.
app.get('/secret', authMiddleware, (req, res) => {
res.send('비밀 정보');
});
app.get('/', (req, res) => {
res.send('홈페이지');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`${PORT}번 포트에서 서버 실행중...`);
});
위 예제에서는 먼저 loggingMiddleware
를 사용하여 모든 요청에 대한 로깅을 수행합니다. 그리고 /secret
경로에 대한 요청을 처리하기 전에 authMiddleware
를 적용하여 요청이 인증된 경우에만 해당 경로에 접근을 허용합니다. 나머지 경로에 대한 요청은 일반적으로 처리됩니다.

이렇게 사용자 정의 미들웨어를 작성하고 Express 애플리케이션에 통합하는 방법을 통해, 애플리케이션의 기능을 유연하게 확장할 수 있습니다.
자세한 내용은 공식 사이트 Express 미들웨어 작성 가이드에서 참고하실 수 있습니다.
관련 이전 게시글
- Express 기본 라우팅: GET과 POST 요청 처리하는 방법
- Express 미들웨어 사용하는 방법과 자주 사용되는 미들웨어 소개
- Express 요청 데이터 파싱: 내장 메서드와 body-parser 미들웨어
- Express에서 에러 처리하는 방법: 404와 500 에러 등
- Express 애플리케이션 보안 강화: Helmet 미들웨어 적용하기
이 글이 도움이 되셨다면 공유 부탁 드립니다.