1. 미들웨어란?

모든 웹서버엔 미들웨어가 있다

 

본인이 만든 app.js 파일에 각종 부가적인 기능을 붙인다고 생각하면 된다.

 

 

팩토리가 서버라면 기계실은 미들웨어다.

다만, 차이점이 있다면 팩토리는 기계실을 하나만 달지만

서버는 미들웨어를 주구장창 달아버릴 수 있다는 것이다.

 

물론 여러가지 기능을 달아줄 순 있지만

미들웨어는 주로 요청과 응답에 대한 처리만을 담당하는 경우가 많다.

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

이 두가지는 form -urlencoded라는 규격의 body데이터를 손쉽게 코드에서 사용할수 있게 도와준다.

json은 JSON이라는 규격의 데이터를 손쉽게 코드에서 사용할 수 있게 도와주는 미들웨어다.

 

이외에도 많지만 일단 두가지를 사용해보자

 

 

2. 미들웨어 작성

 

app.use((req, res, next) => {
  // 필요한 코드
});

요런식으로 작성한다.

req와 res는 요청과 응답에 대한 정보가 담긴 객체이고 next가 새로보이는데 이것은 다음 스택으로 정의된 미들웨어를 호출하는 것이다.

 

 

대략 요런식이다.

요청이 오면 미들웨어에서 처리하고 그 결과를 리스폰으로 보내고

다음 미들웨어를 실행하고.... 이걸 계속 반복한다.

 

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)
app.post('/api', Middleware)

위에서부터 순서대로

모든 요청에서 미들웨어가 실행

api로 시작하는 요청에서 미들웨어를 실행

api로 시작하는 POST 요청에서 미들웨어를 실행

 

 

+ Recent posts