HTML, CSS, JS, 웹, 네트워크
Express(Middleware, Router)
swchung09
2025. 8. 1. 09:37
미들웨어는 클라이언트의 요청에 응답하기 전에 거쳐가는 함수다. 미들웨어는 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);