본문 바로가기

Javascript/Node

[node] 미들웨어(middleWare)

728x90
반응형

 

미들웨어는 쉽게 말해 해당 url에 접근할 때 중간 요청을 가로채는 역할을 한다고 생각하면 된다.

 

테스트를 진행하기 전에 cmd 창에서 logger 확인을 위해 morgan을 intall한 후에 시작한다.

morgan install

설치가 완료되었으면 app.js로 들어와 아래 소스 코드를 추가한다.

const logger = require('morgan') // morgan 호출

app.use(logger('div'));

 

morgan 추가

추가가 완료되었으면 cmd 창에서 app.js를 실행하고 해당 포트의 url에 접속할 때마다 아래와 같이 로그가 확인된다.

cmd창 log 확인

기본 세팅이 완료되었고 이제 미들웨어를 만들기 위해 admin.js로 돌아간다.

미들웨어는 3개의 인자(request, response, next) 를 갖는다.

 

admin.js에 아래와 같은 미들웨어를 추가하고 router.get()에 해당 function을 넣어준다.

function testMiddleWare( req, res, next ){
    console.log('첫 번 째 미들웨어');
    next();
}

function testMiddleWare2( req, res, next ){
    console.log('두 번 째 미들웨어');
    next();
}

router.get('/', testMiddleWare, testMiddleWare2 , (req,res) => {
    res.send('admin 이후 url'); // 최종 도달
});

admin.js에 미들웨어를 추가한 화면

작성이 완료된 후에 지정한 포트의 url에 접속하면 cmd 창에 아래와 같이 로그가 뜨는 것을 확인할 수 있다.

cmd 창의 로그

즉 해당 url 호출 시 첫 번째 미들웨어를 거쳐 첫 번째 function의 로직을 수행하고 next() 되어 두 번 째 미들웨어를 거치고 다시 next되어 최종 'admin 이후 url'을 보여주는 소스에 접근하게 되는 것이다.

 

쉽게 예를 들어 실무에서 로그인을 할때 아래와 같은 소스를 활용할 수 있다.

//로그인 예시
function loginRequired(req, res, next) {
   if(로그인이 되어있지 않으면) {
        res.redirect(로그인 창으로);
    } else {
        next();
    }
}

미들웨어는 당연히 app.js에서도 정의할 수 있다.

아래와 같이 세팅 시 최우선으로 불러지는 최상위 미들웨어를 정의할 수 있다.

function vipMiddleware(req,res,next) {
    console.log('최우선 미들웨어');
    next();
}

app.use('/admin', vipMiddleware, admin);

최상위 미들웨어를 정의한 app.js 화면

완료되었으면 다시 url에 접속한다.

cmd 창을 확인하면 아래의 이미지와 같이 cmd 창에 로그가 뜨는 것을 확인할 수 있다.

cmd창의 로그

출처 : 본 포스트는 패스트캠퍼스의 Node 웹 프로그래밍 올인원 패키지 Online의 박준영 강사님의 강의를 보고 직접 정리한 내용입니다. 

728x90
반응형

'Javascript > Node' 카테고리의 다른 글

[node] 정적파일  (0) 2020.08.31
[node] form(body-parser)  (0) 2020.08.31
[node] 템플릿 상속  (0) 2020.08.26
[node] View Engine - Nunjucks  (0) 2020.08.26
[node] Express를 사용하여 웹 서버 띄우기(feat. nodemon)  (0) 2020.08.25