
미들웨어
미들웨어 함수는 요청 오브젝트, 응답 오브젝트, 그 다음의 미들웨어 함수에 대한 엑세스 권한으로 이루어져 있다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시된다.

해당 코드로 보면 결국 콜백 함수가 미들웨어다. 공부를 하면서 next()는 거의 사용하지 않아 익숙치 않았는데 아래 코드와 함께보면 아주 쉽다.
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
};
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
기본적인 코드다. 여기서 미들웨어 함수는 당연히 myLogger와 루트 경로(/) 라우팅 후 불러오는 콜백함수다. 그러면 위에서부터 순서대로
myLogger 생성이 이루어진다.
미들웨어의 로드 순서가 중요해서, 만약 myLogger 함수가 루트 라우팅 후에 로드된다면 루트 경로의 라우트 핸들러는 응답이 끝난 후, 다음 미들웨어 함수로 요청을 전달하지 않아 루트 경로의 라우트 핸들러 안에서 요청-응답 주기는 끝난다.
비슷한 코드를 보자.
var express = require("express");
var app = express();
var requestTime = function (req, res, next) {
req.requestTime = Date.now();
next();
};
app.use(requestTime);
app.get("/", function (req, res) {
var responseText = "Hello World!";
responseText += "Requested at: " + req.requestTime + "";
res.send(responseText);
});
app.listen(3000);
해당 코드도 위에서부터 읽어내려가면
requestTime() 생성requestTime 미들웨어 호출해서 요청에 Date.now()를 담을 프로퍼티를 추가한다.