728x90
반응형
SMALL
미들웨어의 개념과 사용법을 이해하고, Express에서 내장 미들웨어와 사용자 정의 미들웨어를 활용하는 방법을 익힌다.
1. 미들웨어의 개념과 사용법
미들웨어란?
· 미들웨어는 요청(request)과 응답(response) 사이에 실행되는 함수이다.
· 미들웨어는 요청 객체(req), 응답 객체(res), 그리고 다음 미들웨어 함수를 호출하기 위한 next 함수를 인자로 받는다.
728x90
미들웨어의 역할
· 요청 및 응답을 가로채서 다양한 작업을 수행할 수 있다.
· 예를 들어, 로그 기록, 사용자 인증, 요청 데이터 검증, 오류 처리 등을 할 수 있다.
미들웨어 사용법
· app.use() 메서드를 사용하여 미들웨어를 등록할 수 있다.
const express = require('express');
const app = express();
const port = 3000;
// 미들웨어 함수 정의
const logger = (req, res, next) => {
console.log(`${req.method} ${req.url}`);
next(); // 다음 미들웨어로 이동
};
// 미들웨어 등록
app.use(logger);
app.get('/', (req, res) => {
res.send('Hello, Express with Middleware!');
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
2. 내장 미들웨어와 사용자 정의 미들웨어
반응형
내장 미들웨어
· Express는 여러 내장 미들웨어를 제공하여 다양한 작업을 쉽게 수행할 수 있다.
· 예를 들어, express.json()은 JSON 요청 바디를 파싱하는 미들웨어이다.
// 내장 미들웨어 사용 예제
app.use(express.json()); // JSON 요청 바디 파싱
사용자 정의 미들웨어
· 사용자 정의 미들웨어는 애플리케이션의 요구사항에 맞게 직접 작성할 수 있다.
· 예를 들어, 요청 시간을 기록하는 미들웨어를 작성해보자.
// 사용자 정의 미들웨어
const requestTime = (req, res, next) => {
req.requestTime = Date.now();
next();
};
// 미들웨어 등록
app.use(requestTime);
app.get('/', (req, res) => {
res.send(`Current Time: ${req.requestTime}`);
});
3. 다양한 미들웨어 사용 예제
SMALL
예제: 요청 로깅 미들웨어
· 모든 요청에 대해 요청 메서드와 URL을 로그로 기록하는 미들웨어를 작성해보자.
const logger = (req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
};
app.use(logger);
예제: 오류 처리 미들웨어
· 오류 처리 미들웨어는 네 개의 인자(err, req, res, next)를 사용하여 오류를 처리할 수 있다.
const errorHandler = (err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
};
app.use(errorHandler);
예제: 인증 미들웨어
· 간단한 인증 미들웨어를 작성하여 특정 경로에 대한 접근을 제한해보자.
const auth = (req, res, next) => {
const authHeader = req.headers.authorization;
if (authHeader === 'Bearer mysecrettoken') {
next(); // 인증 성공
} else {
res.status(403).send('Forbidden');
}
};
app.get('/protected', auth, (req, res) => {
res.send('This is a protected route.');
});
- 이전 수업 목록
728x90
반응형
LIST
'프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js 강의 시리즈] 22강 - RESTful API 설계 (0) | 2024.07.23 |
---|---|
[Node.js 강의 시리즈] 21강 - EJS 템플릿 엔진 (0) | 2024.07.22 |
[Node.js 강의 시리즈] 19강 - 라우팅 (0) | 2024.07.18 |
[Node.js 강의 시리즈] 18강 - Express를 사용한 웹 서버 구축 (1) | 2024.07.17 |
[Node.js 강의 시리즈] 17강 - 비동기 처리 패턴 비교 (0) | 2024.07.16 |