[Express] 미들웨어란?

반응형

 

 

 



미들 웨어




 

 

 

미들웨어 : 요청과 응답의 중간(middle) 에 위치하여, 미들웨어라고 부른다. 미들웨어를 사용해 요청과 응답을 조작하여 기능을 추가하거나, 올바르지 않은 요청을 걸러낸다.

 

 

미들웨어를 만들 때는 req, res, next라는 매개변수를 주어야 한다. req는 요청, res는 응답, next는 미들웨어의 작동을 마치고 다음으로 넘어가라는 뜻이다.

 

모든 미들웨어는 app.use를 통해 사용할 수 있으며, app.user(미들웨어) 로 사용한다. 이때 첫 번째 인수로 주소를 넣어줄 수도 있는데, 주소를 넣어주면 해당 요청에서만 미들웨어를 실행하게 된다. 

app.use(미들웨어) 모든 요청이 들어올 때 미들웨어를 실행함
app.use('/login',미들웨어) login로 시작하는 요청이 들어올 때만 미들웨어를 실행함
app.post('/register',미들웨어) register로 시작하는 POST 요청이 들어올 때 미들웨어를 실행함

 

 

 

모든 요청에서 실행되는 미들웨어를, 화살표 함수로 간략하게 작성하면 다음과 같다.

//모든 요청에서 실행되는 미들웨어
app.use( (req,res,next) => { console.log('모든 요청에서 실행되는 미들웨어') })

 

 

 

미들웨어는 '중간'에서 실행된다고 했다. 따라서 '중간' 에서 '다음' 으로 넘어가려면, 미들웨어에 반드시 next라는 함수를 호출해 주어야 한다. mid 라는 이름의 미들웨어를 만들고, app.use로 사용하는 예시를 들면 아래와 같다.

function mid(req,res,next) {
	console.log('미들웨어를 실행합니다.')
    next();
    }


//get에서만 실행되는 미들웨어
app.get('/', mid, (req,res) => { console.log('next()를 이용해 실행된 다음 함수') } )

 

 

 

에러를 처리하는 미들웨어를 만들고 싶다면, err 이라는 매개변수를 추가해야 한다. 하나라도 빼먹어서는 안된다. err에는, 에러에 대한 정보가 담겨 있다. 에러 처리 미들웨어는 특별한 경우가 아니라면 가장 아래에 위치하도록 한다.

app.use( (err,req,res,next) => {
	console.error('err'); })

 

 

 

반응형