app.use에 매개변수가 req, res, next인 함수를 넣으면 됩니다. 미들웨어는 위에서부터 아래로 순서대로 실행되면서 요청과 응답 사이에 특별한 기능을 추가할 수 있습니다. 이번에는 next라는 세 번째 매개변수를 사용했는데, 다음 미들웨어로 넘어가는 함수입니다. next를 실행하지 않으면 다음 미들웨어가 실행되지 않습니다.
주소를 첫 번째 인수로 넣어주지 않는다면 미들웨어는 모든 요청에서 실행되고, 주소를 넣는다면 해당하는 요청에서만 실행된다고 보면 됩니다.
▼ 표 6-1 미들웨어가 실행되는 경우
app.use(미들웨어) |
모든 요청에서 미들웨어 실행 |
app.use('/abc', 미들웨어) |
abc로 시작하는 요청에서 미들웨어 실행 |
app.post('/abc', 미들웨어) |
abc로 시작하는 POST 요청에서 미들웨어 실행 |
app.use나 app.get 같은 라우터에 미들웨어를 여러 개 장착할 수 있습니다. 현재 app.get 라우터에 미들웨어가 두 개 연결되어 있습니다. 다만, 이때도 next를 호출해야 다음 미들웨어로 넘어갈 수 있습니다.
현재 app.get('/')의 두 번째 미들웨어에서 에러가 발생하고, 이 에러는 그 아래에 있는 에러 처리 미들웨어에 전달됩니다.