728x90
1. 미들웨어란 무엇인가? (Definition)
미들웨어는 이름 그대로 **'중간(Middle)에 있는 소프트웨어'**입니다. 클라이언트(브라우저)에서 보낸 **요청(Request)**이 서버의 최종 **응답(Response)**에 도달하기 전까지 거쳐가는 모든 함수를 말합니다.
Express 앱은 사실상 수많은 미들웨어가 줄지어 서 있는 파이프라인과 같습니다.
2. 왜 사용하는가? (Identity & Benefits)
만약 미들웨어가 없다면, 모든 라우트(URL)마다 똑같은 코드를 반복해서 써야 합니다. 미들웨어를 쓰면 공통적인 작업을 한 번에 관리할 수 있어요.
- 공통 로직 처리: 로그인 여부 확인, 로그 기록(Logging), 데이터 파싱 등 모든 요청에 필요한 작업을 자동화합니다.
- 보안: 이상한 요청이 들어오면 최종 목적지에 도달하기 전에 미리 차단합니다.
- 코드의 재사용성: 한 번 만든 미들웨어 함수는 여기저기서 재사용할 수 있어 코드가 깔끔해집니다.
3. 어떻게 사용하는가? (Usage)
미들웨어 함수는 세 개의 인자를 가집니다: req, res, 그리고 next.
① 미들웨어의 구조
JavaScript
const myMiddleware = (req, res, next) => {
console.log('요청이 지나가는 중입니다...');
// 중요! 다음 미들웨어로 넘어가려면 반드시 next()를 호출해야 합니다.
next();
};
② 미들웨어 사용 패턴
- 애플리케이션 레벨 (모든 요청에 적용):
-
JavaScript
app.use(myMiddleware); - 라우터 레벨 (특정 주소에만 적용):
-
JavaScript
app.get('/admin', myMiddleware, (req, res) => { res.send('관리자 페이지'); });
4. 미들웨어의 핵심 규칙
- 순서가 생명이다: 미들웨어는 위에 적힌 순서대로 실행됩니다. 로그를 남기는 미들웨어는 보통 가장 위에 둡니다.
- 반드시 응답하거나 넘기거나: res.send() 등으로 응답을 끝내거나, next()를 호출해 다음으로 넘겨야 합니다. 둘 다 안 하면 브라우저는 무한 대기 상태(Pending)에 빠집니다.
- 에러 처리 미들웨어: 인자가 4개(err, req, res, next)인 특수한 미들웨어는 에러가 발생했을 때만 작동합니다.
요약하자면
- 무엇? 요청과 응답 사이의 '검문소' 같은 함수.
- 왜? 반복되는 작업을 줄이고 코드를 관리하기 편하게 하려고.
- 어떻게? app.use()로 등록하고, 안에서 next()를 호출해 흐름을 이어간다.
728x90
'기술 학습' 카테고리의 다른 글
| TypeScript란? (0) | 2026.02.05 |
|---|---|
| req, res, next 란? (0) | 2026.02.04 |
| Passport란? (0) | 2026.02.04 |
| 엔드포인트란? (0) | 2026.02.02 |
| express.Router() 란? (0) | 2026.01.29 |