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);

'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