미들웨어는 클라이언트의 요청에 응답하기 전에 거쳐가는 함수다. 미들웨어는 app.use로 설정할 수 있다.
미들웨어에는 크게 3가지 종류가 있다.
1. 애플리케이션 레벨 미들웨어
전체 애플리케이션에서 동작하게 설정된 미들웨어다.
const express = require('express');
const app = express();
app.use((req, res) => {
});
2. 예외 처리 미들웨어
요청을 처리하는 중 문제가 생기면 호출되는 미들웨어다. 애플리케이션과 다르게 인자가 4개가 필요하다.
const express = require('express');
const app = express();
app.use((err, req, res, next) => {
});
3. 내장 미들웨어
자주 호출되는 미들웨어는 express 네임스페이스로 접근할 수 있다.
const express = require('express');
const app = express();
app.use(express.static('public')); // 요청 시 ./public 내 엔드포인트 이름을 가진 파일 제공
app.use(express.json()); // 요청 내용이 json인 경우 자동으로 파싱
app.use(express.urlencoded({extended:true})); // application/x-www-form-urlencoded 데이터를 자동으로 파싱
app.use(express.raw()); // 요청 내용을 buffer로 처리
app.use(express.text()); // 요청 내용을 plain text로 처리
미들웨어 함수에서 next 함수를 사용할 경우 다음 미들웨어 함수로 넘어간다.
const login = (req, res) => {
if (req.isLogined()) {
next();
}else {
res.status(401).send('No');
}
}
app.use(login);
app.get('/', (req, res) => {
res.send('Welcome');
}
라우터는 라우팅을 모듈화하고 정리하기 위한 미들웨어다.
express.Router()로 라우터 객체를 선언하고 app.use로 사용할 수 있다.
const express = require('express');
const app = express();
const router = express.Router();
router.get('/', (req, res) => {
res.send('User hi');
}
app.use('/user', router);'HTML, CSS, JS, 웹, 네트워크' 카테고리의 다른 글
| 네트워크 기초 정리 (2) | 2025.09.01 |
|---|---|
| NAT, PAT (0) | 2025.08.27 |
| Express(Cookie, Session) (0) | 2025.07.07 |
| Express, pug (0) | 2025.06.23 |
| Node.js (3) | 2025.06.18 |