미들웨어는 요청과 응답 사이에서 실행되는 함수 또는 객체입니다. 미들웨어를 사용하여 요청을 처리하기 전 또는 후에 작업을 수행할 수 있습니다. 예를 들어, 미들웨어를 사용하여 요청을 로그하거나 인증을 수행하거나 응답 헤더를 설정할 수 있습니다.
미들웨어의 유형
중요: 호출된 미들웨어에서 요청-응답 주기를 종료하지 않으면 다음 미들웨어 기능으로 제어를 전달하기 위해 next()를 호출해야 합니다. 그렇지 않으면 요청이 중단된 상태로 유지됩니다.
function middleware(req, res, next) {
// 여기서 요청 및 응답 객체에 액세스하고 작업을 수행할 수 있습니다.
next();
}
//미들웨어 함수를 사용하려면 다음과 같이 app.use() 메서드에 전달합니다.
app.use(middleware);
//미들웨어 함수를 특정 라우터에 적용하려면 다음과 같이 app.use() 메서드에 라우터 경로를 전달합니다.
app.use('/users', middleware);
//미들웨어 함수를 오류 처리에 사용하려면 다음과 같이 app.use() 메서드에 네 번째 인수를 전달합니다.
app.use(function(err, req, res, next) {
// 여기서 오류를 처리할 수 있습니다.
});
모든 요청에 대해 요청 URL, Method, request 파라메터를 출력하는 로그를 적용했습니다.
//common log
app.use((req: Request, res: Response, next: NextFunction) => {
console.log('==================');
console.log('requestURL:' + req.url);
console.log('requestMethod:' + req.method);
if (req.method !== 'GET') {
console.log('requestBody:' + JSON.stringify(req.body));
} else {
console.log('requestQuery:' + JSON.stringify(req.query));
}
next();
});
Reference
https://expressjs.com/en/guide/writing-middleware.html
https://velog.io/@dkvlg/Express-js%EC%9D%98-next-%ED%95%A8%EC%88%98%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C