본문 바로가기

WebApp/Node.js-express

Node.js-express-미들웨어 실행순서

가이드의 유징 미들웨어를 들어가보면

미들웨어는 여러가지 타입들이 있는데

우리가 지금까지 사용한 우리가 쓴 app.use 나 app.get등은

애플리케이션 객체가담긴 애플리케이션 레벨 미들웨어이고

 

그리고 서드파티 미들웨어는 역시 우리가 살펴봤고

바디파서라든지 컴프레션등

 

 

 

그리고 애플리케이션 레벨 미들웨어를 다시살펴보면

 앱유즈에다가 아래처럼 함수를 등록해주면

이 함수는 미들웨어로써 등록이 되는 것이고 미들웨어의 핵심은

리퀘스트와 리스폰스 객체를 받아서 그것을 변형할 수 있다

그리고 넥스트라는 것을 호출하는 것을 통해서 그

다음에 실행되어야 할 미들웨어를 실행할지 실행하지

아닐지를 그 미들웨어의 이전 미들웨어가 결정하도록 한다

라는 것을 이해하는게 핵심

 

 

 

 

앱유즈에 경로를 주는것을 통해서 특정 경로에만

미들웨어가 동작하도록 할 수 도 있고

 

 

 

앱겟을 통해서 메소드가 메소드가 겟방식인 경우에만

그 다음 경로가 동작하도록 할수도 있고

 

 

 

미들웨어가 등록되었는데 또 다음에 컴마 이후 또 미들웨어가

등록되어 있다 이것은 인자로 함수를 연속적으로 주는 것을

통해서 미들웨어를 여러개를 붙일 수 있다는 것이다

처음 함수가 실행되고 그 함수안에서 넥스트를 호출하면

얘는 다음 함수가 실행되는 것이다

 

 

 

똑같은 패스를 가지고 있는 라우트가 2개가 등장하는데

이경우에도  첫번쨰 라우트에는 미들웨어가 2개의 미들웨어가 등록되어있고

두번쨰 라우트에는 하나의 미들웨어가 등록되어있는데

이경우 어떻게 미들웨어가 실행되느냐

제일먼저 순서에 따라서 첫번째 라우트의 함수가 실행되고

넥스트가 호출되면 그 다음에 있는 미들웨어가 호출되고

그 미들웨어가 넥스트를 다시 호출하지 않으면 거기에서 끝나며

아래의 라우트는 실행되지 않음

 

 

 

 

조건문을 통해서 그 다음 미들웨어가 실행될지 말지를 처리가능

만약에 리퀘스트 파람 아이디의 값이 0이라면

next('route') 즉 다음 라우트의 미들웨어를 실행하라는 것

따라서 아래의 app.get(~functiom(){

res.render('special')}이 실행되고

 

근데 그냥 next()라면

인자가 없으니까 해당 라우트안에 있는 다른 함수를 실행하라는 것

 

 

 

 

 

'WebApp > Node.js-express' 카테고리의 다른 글

Node.js-express-error처리  (0) 2020.09.15
Node.js-express-정적인 파일의 서비스  (0) 2020.09.15
Node.js-express -미들웨어 생산  (0) 2020.09.12
Node.js-express-미들웨어사용  (0) 2020.09.11
Node.js- express  (0) 2020.09.10