middleware 함수는 req, res, 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 middleware함수에 대한 권한을 갖는 함수입니다.
간단히 말하면 애플리케이션의 어떤 요청과 응답의 사이 혹은 요청 이전, 응답 이후에 원하는 다른 작업을 넣을 수 있는 기능입니다.
(기본적으로 보이는 HANDLER도 middleware함수)
아래 보이는 사진은 express 공식 문서에 나와있는 middleware함수 호출의 요소
(출처 : https://expressjs.com/)
const express = require('express'); const app = express(); const myLogger = function (req, res, next) { console.log('LOGGED'); next(); }; app.use(myLogger); app.get('/', function (req, res) { res.send('Hello World!'); }); app.listen(3000);
-> middleware함수가 모든 라우터들 위에 있으면 요청이 수신될때마다 해당 middleware를 실행함.
-> Node.js는 위에서 아래로 왼쪽에서 오른쪽으로 실행됨.
-> 항상 middleware의 호출 순서를 조심해야함.
const express = require('express'); const app = express(); const requestTime = function (req, res, next) { req.requestTime = Date.now(); next(); }; app.use(requestTime); app.get('/', function (req, res) { const responseText = 'Hello World!'; responseText += 'Requested at: ' + req.requestTime + ''; res.send(responseText); }); app.listen(3000);
-> 특정 라우터안에 함수 추가 가능.
-> 만약 분리된 라우터에서 middleware를 호출했다면 해당 라우터내에서만 호출됨.