brunch

You can make anything
by writing

C.S.Lewis

by 이종복 May 17. 2019

middleware 이해하기(1)  

 middleWare는 코드의 구조내에서 중간 처리를 하기 위한 함수(혹은 모듈)이다.

 middleWare는 크게 2가지로 나누어진다. 첫째는, 사용자가 직접 작성하는 것, 둘째는 Third-party에서 다운 받는 것이다. 각각에 대해서 살펴보자. 

  

1) 사용자 정의 middleWare

- 다음은 index.js에서 작성한 middleWare함수이다. 

(참고- 이전 글에서 function으로 작성했던 함수를 const로 수정했으니 참고바란다.)

함수의 정의를 살펴보자. 

const middleWare = (req, res, next) => {

    console.log("I'm MiddleWare");

    next();

}

app.get('/', middleWare, handleHome); 


즉, middleWare 함수를 통해, 메인 페이지인 localhost:4000에 접속했을 때, 

"I'm MiddleWare"가 터미널 창에 뜨고 난 후, 콜백함수인 handleHome이 실행되도록 한다. 

 이 때, next()의 의미가 중요한데, next()가 다음 콜백함수를 실행하도록 넘어갈 수 있게 명령하기 때문이다. 


만약 next()가 없으면 어떤 일이 발생할까? 


I'm middleWare는 그대로 터미널에 뜨지만, 


메인 페이지인 localhost:4000는 실행되지 않는다. 왜냐하면 middleWare 함수에서 다음 콜백함수로 넘어가지 못해서 handleHome이 실행되지 않기 때문이다. 


이와 같이 다양한 middleWare 함수를 만들 수 있다. 

이번에는 Express 홈페이지에 나온 예시를 통해 middleWare함수를 이해해보자. 


 다음에서는 requestTime이라는 middleWare함수가 작성되었다. 

 이 middleWare함수는 req.requestTime에 '현재 시각'을 저장한다.

app.use()는 특정 middleWare 함수를 실행하기 위한 메소드다. 이 경우, app.get('/')에서 requestTime이 쓰이기 위해서는 app.get('/')이전에 반드시 app.use(requestTime)이 실행되어야 한다. 


app.get('/')이 실행되면, app.get('/') 내부의 responseText += 'Requested at:' + req.requestTime + '';

을 통해 현재 시각이 전달되고, 이것의 결과가 localhost:4000 메인 화면에 띄워지게 된다. 


"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari