next 활용법에 이어서
미들웨어는 다른 사람이 만들어놓은 미들웨어를 사용할 수 있다는 장점이 있다.
npm i morgan cookie-parser express-sessionmorgan
morgan은 요청과 응답에 대한 정보를 콘솔에 기록할 때 사용한다.
const morgan = require('morgan');
app.use(morgan('dev'));상단에 morgan 미들웨어를 추가하면 요청마다 콘솔에 아래 텍스트가 출력된다.
GET / 304 42.631 ms - -인수로 dev 외에 combined, common, short, tiny 등을 넣을 수 있다.
combined
표준 Apache 결합 로그 포맷이다. 가장 상세한 정보를 제공하므로, 주로 배포 환경에서 방문자 통계나 오류 추적을 위해 사용된다.
접속자 IP, 날짜/시간, HTTP 메서드, URL, HTTP 버전, 상태 코드, 응답 크기, 유입 경로, User-Agent(브라우저 및 OS 정보)가 출력된다.
::1 - - [03/Jul/2026:05:14:37 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36"common
combined 포멧에서 Referer와 User-Agent 정보만 제외된 형태이다.
::1 - - [03/Jul/2026:05:16:32 +0000] "GET / HTTP/1.1" 304 -short
접속자 IP와 요청 정보, 그리고 응답 시간을 포함하여 비교적 짧게 출력하는 포맷이다.
::1 - GET / HTTP/1.1 304 - - 7.538 mstiny
최소한의 정보만 출력하는 포맷으로, HTTP 메서드, URL, 상태 코드, 응답 크기, 응답 시간을 포함한다.
GET / 304 - - 4.580 msdev
개발 중 가독성을 극대화하기 위한 포맷이다.
HTTP 메서드, URL, 상태 코드, 응답 시간, 응답 크기를 포함한다.
GET /morgan 200 2.686 ms - 4bodyParser
bodyParser는 요청의 본문 데이터를 해석해서 req.body 객체로 만들어주는 미들웨어이다. 단, 멀티파트(이미지, 동영상, 파일) 데이터는 처리하지 못하기 때문에 이 경우에는 multer 모듈을 사용하면 된다.
express 4.16.0 버전부터는 body-parser 미들웨어 기능이 내장되었으므로 따로 설치할 필요는 없다.
app.use(express.json());
app.use(express.urlencoded({ extended: true }));cookieParser
cookie-parser는 요청에 동봉된 쿠키를 req.cookies 객체로 만든다.
app.use(cookieParser());쿠키들은 req.cookies 객체에 들어간다.
그 외에도 쿠키를 설정하고 삭제하는 방법은 아래와 같다.
app.get('/', (req, res, next) => {
// setCookie
req.cookies('name', encodeURIComponent(name), {
expires: new Date(),
httpOnly: true,
path: '/',
})
// Clear Cookie
res.clearCookie('name', encodeURIComponent(name), {
httpOnly: true,
path: '/',
})
});또 쿠키를 암호화하는 방법이 있다.
app.use(cookieParser(비밀키));암호화된 쿠키는 req.cookies가 아닌 req.signedCookies로 들어간다.