Express_makeMiddleWare

YoonJu Lee·2021년 7월 16일
0

Node.js

목록 보기
1/10

싸이트 ) expressjs.com

express - middleWare ; 이런 형태를 가지고 있어야 한다.
이게 3rd Party 와 같다.

middleWare 만들기

1.

/* middleWare 만들기
  : 중복되는 함수)
  fs.readdir('./data', (error, filelist) => {}
*/
app.use((request, response, next) => {
  fs.readdir('./data', (error, filelist) => {
    request.list = filelist;
    next(); //미들웨어 실행 <= next(); 호출되어야할 미들웨어가 담겨있따
  })
})

console.log(request.list)의 결과)

2.

수정 : create, update, 같은 곳에서 dir를 읽어올 필요가 없다.

get 방식으로 들어오는 모든 요청에 대해서만 파일 목록을 가져온다.
따라서, post방식으로 가져온 것은 처리하지 않는다.

// *: 모든요청 ,
app.get('*', (request, response, next) => {
  fs.readdir('./data', (error, filelist) => {
    request.list = filelist; // requestr객체에 list를 셋팅
    //==>  모든 라우터들은 request 객체의 list property를 통해 filelist에 접근 가능하다

    next(); //미들웨어 실행 <= next(); 호출되어야할 미들웨어가 담겨있따
  })
})
// route, routing : 네비게이션. 사용자들이 여러 path로 왔을 때, 그 경로를 설정해준다. 

해설

라우트라고만 생각되었던 것에서, 2번째 인자로 전달 된 콜백은 미들웨어이다!!
express에서는 모든 게 미들웨어이다.
app.use라고 정의되면, 그 안의 미들웨어가 실행된다.

//1. 
app.use(bodyParser.urlencoded({ extended: false }))
//2.
app.use(compression());
//3.
app.get('*', (request, response, next) => {
  fs.readdir('./data', (error, filelist) => {
    request.list = filelist; 
    next(); 
  })
})

우리가 만든 인자로 전달된 콜백 function(~~)이 미들웨어이고,

app.use를 통해서 정의하면..
==> 1) 그 안의 미들웨어가 실행하고,
==> 2) 그 밑의 compression 미들웨어가 실행하고,
==> 3) get으로 감싼 미들웨어가 실행하고,
==> 4) 그 밑으로 내려가면서, path에 해당되는 미들웨어가 실행한다. (페이지에서 경로별로 라우트 해 놓은것을 말함. 브라우저에서 해당하는 경로대로 실행하잖아요~~^)

app이 구동될때, 순서대로 등록되어 있는 작은 프로그램들이 실행되는데 각각의 프로그램들이 서로를 연결해 주는 작은 소프트웨어라는 점에서 미들웨어라고 하는 것은 아닐까?.

profile
Coder가 아닌 Engineer를 향해서.

0개의 댓글