express_middleWare 순서

MiddleWar는 4가지가 존재.

1. 3rd Party MiddleWare

app.use(bodyParser.urlencoded({ extended: false }))

app.use(compression());

와 같은부분.

2. Application Level MiddleWAre

( * 4가지 중 가장 중요함 )

app.use(bodyParser.urlencoded({ extended: false }))

app.use(compression());

app.get('*', (request, response, next) => {
  fs.readdir('./data', (error, filelist) => {
    request.list = filelist; 
    next();

app 변수는 application 객체가 담겨져있음.
그 객체의 use/ get/ post 이러한 방식을 통해서
middleWare 등록가능.
이렇게 등록된 MiddleWAre : Application Level MiddleWare


이 중, Aplication-level middleware가 가장 중요.

2- 1. 기본 Aplication-level middleware


app.use( (req,res,next){} );
; (req,res,next){} 는 middleware로서 등록
middleware의 핵심은 req,res 객체를 받아서 변형할 수 있다.
next()함수를 받아서, 그 다음 함수의 실행여부를 그 미들 웨어의 이전 미들웨어가 결정하도록 한다.

2- 2. 특정 경로에서만 미들웨어 실행!

2- 3. 메소드가 get방식을 통해서만 경로가 동작.

2- 4. 인자로 함수(콜백함수)를 여러개 붙인다.

맨 처음 콜백 함수가 처음에 실행이 되고,
next()를 호출하면,
바로 붙어있는 콜백함수가 실행된다.
순서대로 실행됨.

2- 4. 똑같은 path를 가지고 있는 라우트 2개가 등장.

라우트 2개
1) MiddleWare 2개
2) MiddleWare 1개
==> 코드 실행?
A. 순서에 따라, 제일 먼저있는 라우트실행 -> 그 미들웨어 실행 -> next()호출=> 다음 미들웨어 호출

  • next()가 없다면, 뒤의 라우트는 실행되지 않는다!

2- 5. 조건문을 통해서 미들웨어의 다음 미들웨어가 실행될지를 결정.

  • next('route'); 다음 라우트의 미들웨워를 실행해라.
  • next(); 인자가 없는 next ; 바로 붙어있는 미들웨어가 실행됨.

미들웨어를 잘 설계하면, Application이 실행되는 흐름을 자유자재로 개발하기 쉽다.

좋은 웹페이지 즐겨찾기