-
[JavaScript] Node.js에서 요청 및 응답 처리: 미들웨어와 라우터2024년 12월 30일
- 유니얼
-
작성자
-
2024.12.30.:46
728x90Node.js는 HTTP 요청과 응답을 처리하기 위한 강력한 도구를 제공합니다. 특히, Express.js는 이를 보다 효율적으로 다루기 위해 라우트와 미들웨어를 제공합니다. 이번 글에서는 라우트와 미들웨어를 기반으로 요청과 응답을 처리하는 핵심 내용을 설명하고, 간단한 예제를 통해 이해를 돕겠습니다.
미들웨어
미들웨어는 요청(Request)과 응답(Response) 사이에서 특정 작업을 수행하는 함수입니다.
Express에서 미들웨어는 다음과 같은 형태를 가집니다:app.use((req, res, next) => { // 요청 처리 로직 next(); // 다음 미들웨어 또는 라우터로 요청 전달 });
미들웨어의 주요 특징
1, 중간 작업 수행: 로깅, 인증, 데이터 파싱, 오류 처리 등의 작업을 수행.
2, 요청 흐름 제어: next()를 호출하여 요청을 다음 미들웨어나 라우터로 전달.
3, 적용 범위 설정 가능: 모든 요청에 적용하거나 특정 경로에서만 동작하도록 설정 가능.
미들웨어의 사용 사례
1, 전역 미들웨어: 모든 요청에 대해 동작.
app.use((req, res, next) => { console.log(`${req.method} ${req.url}`); next(); });
2, 경로별 미들웨어: 특정 경로에서만 동작.
app.use('/secure', (req, res, next) => { if (!req.headers['authorization']) { return res.status(401).send('Unauthorized'); } next(); });
3, 에러 처리 미들웨어: 요청 처리 중 발생한 오류를 처리.
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Internal Server Error'); });
라우터
라우터는 요청 경로(URL)와 HTTP 메서드(GET, POST 등)에 따라 요청을 처리할 핸들러(함수)로 연결하는 역할을 합니다.
Express에서 라우터는 다음과 같이 사용됩니다:app.get('/path', (req, res) => { res.send('Response for GET /path'); });
라우터의 주요 특징
1, 요청 경로 기반 처리: 경로와 메서드에 따라 요청을 분리.
2, 명확한 역할: 비즈니스 로직을 처리하거나 데이터를 반환.
3, 모듈화 가능: express.Router를 사용하여 라우터를 별도 파일로 분리 가능.
라우터의 사용 사례
1, 기본 라우터:
app.get('/', (req, res) => { res.send('Home Page'); });
2, 라우터 모듈화:
const router = require('express').Router(); router.get('/users', (req, res) => { res.send('User List'); }); app.use('/api', router);
미들웨어와 라우터의 비교
특징 미들웨어 라우터 주요 목적 요청-응답 사이에서 데이터 가공, 검증, 흐름 제어 수행. 요청 경로(URL)와 HTTP 메서드에 따라 로직 처리. 적용 범위 모든 요청 또는 특정 경로에 적용 가능. 특정 경로와 HTTP 메서드(GET, POST 등)에만 적용. 역할 분리 전처리(로깅, 인증, 파싱 등)와 후처리(에러 처리 등). 비즈니스 로직 실행 및 데이터 반환. 독립적 사용 여부 가능. 가능. 조합 가능성 라우터 이전 또는 이후에 실행 가능. 미들웨어와 결합 가능.
결론
Node.js에서 미들웨어와 라우터는 요청 및 응답 처리의 핵심 요소입니다.
- 미들웨어는 요청과 응답의 흐름을 제어하며, 공통 작업(예: 인증, 데이터 파싱)을 처리합니다.
- 라우터는 요청 경로와 HTTP 메서드에 따라 비즈니스 로직을 실행합니다.
둘은 독립적으로 사용할 수도 있지만, 함께 조합하여 더 강력하고 효율적인 애플리케이션을 설계할 수 있습니다.
미들웨어와 라우터의 역할을 명확히 구분하여 사용하는 것이 코드의 가독성과 유지보수성을 높이는 데 큰 도움이 됩니다.반응형다음글이전글이전 글이 없습니다.댓글