웹 개발에서 요청과 응답의 흐름을 제어하는 것은 매우 중요합니다. 이를 위해 자바스크립트 미들웨어를 사용할 수 있습니다. 자바스크립트 미들웨어는 클라이언트와 서버 간의 요청과 응답을 중간에서 가로채고 수정 또는 확장하는 역할을 합니다.
미들웨어 동작 원리
미들웨어는 요청과 응답 객체에 대한 접근 권한을 가지고 있으며, 다음과 같은 순서로 작동합니다.
- 요청이 서버에 도달하면, 미들웨어는 요청 객체를 수정하거나 검증할 수 있습니다.
- 요청 객체를 다음 미들웨어로 전달합니다.
- 응답이 생성되면, 미들웨어는 응답 객체를 수정하거나 추가 작업을 수행할 수 있습니다.
- 응답 객체를 클라이언트로 반환합니다.
Express.js에서 미들웨어 사용하기
Express.js는 자바스크립트 런타임 환경인 Node.js의 웹 프레임워크로, 미들웨어를 사용하기 매우 편리합니다. 다음은 Express.js에서 미들웨어를 사용하는 예제 코드입니다.
const express = require('express');
const app = express();
// 미들웨어 등록
app.use((req, res, next) => {
// 요청 처리 로직 작성
console.log('요청이 들어왔습니다.');
next();
});
// 라우트 핸들러 등록
app.get('/', (req, res) => {
// 응답 처리 로직 작성
res.send('Hello World!');
});
// 서버 시작
app.listen(3000, () => {
console.log('서버가 시작되었습니다.');
});
위 코드에서 app.use()
함수를 통해 미들웨어를 등록합니다. 미들웨어 함수는 요청과 응답 객체에 대한 접근 권한을 가지고 있으며, next()
함수를 통해 다음 미들웨어로 제어를 넘길 수 있습니다.
미들웨어 기능 확장
미들웨어를 더욱 확장하여 유용한 기능을 구현할 수 있습니다. 예를 들어, 인증 처리를 담당하는 미들웨어를 작성해보겠습니다.
const authenticate = (req, res, next) => {
// 인증 로직 작성
if (req.headers.authorization === 'secret_token') {
console.log('인증되었습니다.');
next();
} else {
res.status(401).send('인증에 실패했습니다.');
}
};
app.use(authenticate);
위 코드에서 authenticate
함수는 클라이언트의 요청을 검증하여 인증 여부를 확인합니다. 인증이 성공하면 next()
함수를 호출하여 다음 미들웨어로 제어를 넘기고, 인증 실패 시 401 오류를 반환합니다.
결론
자바스크립트 미들웨어를 사용하면 요청과 응답의 흐름을 중간에서 가로채고 수정할 수 있으므로, 웹 개발에서 유연하고 강력한 제어를 할 수 있습니다. Express.js와 같은 프레임워크를 사용하면 미들웨어를 손쉽게 활용할 수 있으며, 필요에 따라 미들웨어를 확장하여 원하는 기능을 구현할 수 있습니다.
참고 문서: Express.js 공식 문서