Apache
Nginx
두 웹 서버 모두 “모듈” 이라는 개념을 가지고 있는데, 미들웨어와 아주 유사하다.
요즘은 어디서나 볼 수 있는 보안 연결 방법인 HTTPS를 지원하기 위해서는 https 모듈을 추가하고, 모든 요청과 응답을 기록하고 싶다면 로깅을 해주는 모듈을 추가하면 된다.
Express.js의 미들웨어와 같은 개념.
app.use(express.urlencoded({ extended: false }));
app.use(express.json());urlencoded: form-urlencoded 라는 규격의 body 데이터를 손쉽게 코드에서 사용할 수 있게 도와주는 미들웨어다!
json: JSON 이라는 규격의 body 데이터를 손쉽게 코드에서 사용할 수 있게 도와주는 미들웨어다!
이 외에도 다양하게 있지만 우리의 수업에서는 이 두가지를 사용 할 예정이다!
app.use((req, res, next) => {
// 필요한 코드
}); 위의 형태에서 req, res, next는 각자 역할을 지니고 있는 인자(Parameter)이다.req: 요청(Request)에 대한 정보가 담겨있는 객체이다.res: 응답(Response)을 위한 기능이 제공된다.next: 다음 스택으로 정의된 미들웨어를 호출한다. !https://s3-us-west-2.amazonaws.com/secure.notion-static.com/37d79f84-576e-4657-b9f7-5afc5519788d/Untitled.pngapp.use((req, res, next) => {
console.log('Request URL:', req.originalUrl, ' - ', new Date());
next();
});node app.js로 서버를 실행해서 메인페이지로 접속해보기!app.use((req, res, next) => {
console.log('첫번째 미들웨어');
next();
});
app.use((req, res, next) => {
console.log('두번째 미들웨어');
next();
});
app.use((req, res, next) => {
console.log('세번째 미들웨어');
next();
});
// print: 첫번째 미들웨어
// print: 두번째 미들웨어
// print: 세번째 미들웨어next() 가 실행되지 않으면 다음 미들웨어는 실행되지 않고, 클라이언트의 요청은 거기서 종료된다.app.use(Middleware) : 모든 요청에서 미들웨어가 실행된다.app.use(’/api’, Middleware) : /api로 시작하는 요청에서 미들웨어를 실행한다.app.post(’/api’, Middleware) : /api로 시작하는 POST 요청에서 미들웨어를 실행한다.