미들웨어는 쉽게 말해 해당 url에 접근할 때 중간 요청을 가로채는 역할을 한다고 생각하면 된다.
테스트를 진행하기 전에 cmd 창에서 logger 확인을 위해 morgan을 intall한 후에 시작한다.
설치가 완료되었으면 app.js로 들어와 아래 소스 코드를 추가한다.
const logger = require('morgan') // morgan 호출
app.use(logger('div'));
추가가 완료되었으면 cmd 창에서 app.js를 실행하고 해당 포트의 url에 접속할 때마다 아래와 같이 로그가 확인된다.
기본 세팅이 완료되었고 이제 미들웨어를 만들기 위해 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'); // 최종 도달
});
작성이 완료된 후에 지정한 포트의 url에 접속하면 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);
완료되었으면 다시 url에 접속한다.
cmd 창을 확인하면 아래의 이미지와 같이 cmd 창에 로그가 뜨는 것을 확인할 수 있다.
출처 : 본 포스트는 패스트캠퍼스의 Node 웹 프로그래밍 올인원 패키지 Online의 박준영 강사님의 강의를 보고 직접 정리한 내용입니다.
'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 |