요청과 응답의 중간에 있다고 해서 미들웨어라고 부른다. 미들웨어를 통해 요청과 응답을 조작해 기능을 추가하기도 하고, 걸러내기도 한다.
app.use((req,res,next)=>{
console.log('모든 요청에 실행된다.');
next(); // 다음 미들웨어 실행
});
app.get('/',(req,res,next)=>{
console.log('get / 요청에서만 실행된다')
next(); // 다음 미들웨어 실행
}, (req,res)=>{
throw new Error('에러는 에러 처리 미들웨어로 가도록 한다.')
});
app.use((err,req,res,next)=>{
console.error(err);
res.status(500).send(err.message);
})
미들웨어는 위에서 아래로 순서대로 실행되면서 요청과 응답 사이에 기능을 추가할 수 있다.
next()라는 세번째 매개변수를 사용하면 다음 미들웨어로 넘어갈 수 있다. next를 실행하지 않으면 다음 미들웨어로 실행되지는 않는다.
에러 처리 미드웨어는 매개변수가 반드시 4개여야 한다.
모든 매개변수를 사용하지 않더라도 4개여야 한다.
static 미들웨어는 정적인 파일들을 제공하는 라우터역할을 한다.
요청의 본문에 있는 데이터를 해석해서 req.body객체로 만들어주는 미들웨어
쿠키를 해석해서 req.cookies 객체로 만든다.