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이 실행되는 흐름을 자유자재로 개발하기 쉽다.
Author And Source
이 문제에 관하여(express_middleWare 순서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@glowing0512_/expressmiddleWare-순서저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)