앞서서 작성한 app.js를 좀 더 하나씩 살펴보겠습니다.
[app.js]
const express =require('express');
const morgan = require('morgan');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const dotenv = require('dotenv');
const path = require('path');
dotenv.config();
const app = express();
app.set('port', process.env.PORT || 3000);
app.use(morgan('dev'));
app.use('/', express.static(path.join(__dirname, 'public')));
app.use(express.json());
app.use(express.urlencoded( {extended: false} ));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false,
},
name: 'session-cookie',
}));
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);
});
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트에서 대기');
});
위 서버를 실행한 후, 브라우저에서 localhost:3000에 접속해 보겠습니다. 콘솔에 다음과 같은 메시지가 출력되는 것을 확인할 수 있습니다.
3000 번 포트에서 대기
모든 요청에 실행됨
GET / 요청에서만 실행됨
Error: 에러는 에러 처리용 미들웨어로 전달
// 에러 스택 생략...
GET / 500 9.639 ms - 49
모든 요청에 실행됨
GET /favicon.ico 404 2.092 ms - 150
여기서 출력되는 GET 500 9.639 ms -49라는 라인은 morgan 미들웨어를 통해 나오는 것입니다. 이는 여기서 발생하는 요청과 응답에 대한 정보를 콘솔에 기록하는 역할을 합니다. 참고로 morgan 미들웨어의 사용은 app.use(morgan('dev'));
형식으로 사용하게 되는데, 일반적으로 개발 환경에서는 'dev', 배포 환경에서는 combined를 사용합니다.
여기서 등장한 GET / 500 9.639 ms - 49 를 하나씩 뜯어보자면 [HTTP 메서드] [주소] [HTTP 상태 코드] [응답속도] - [응답 바이트]를 의미합니다. 이를 통해 요청과 응답을 한눈에 살펴볼 수 있다는 장점이 있지요.
'Programming > Node.js' 카테고리의 다른 글
7. 익스프레스 (1) - 미들웨어 [5] : body-parser (0) | 2024.08.28 |
---|---|
7. 익스프레스 (1) - 미들웨어 [4] : static (0) | 2024.08.27 |
7. 익스프레스 (1) - 미들웨어 [2] : 다양한 미들웨어 적용하기 (0) | 2024.08.25 |
7. 익스프레스 (1) - 미들웨어 [1] (0) | 2024.08.24 |
7. 익스프레스 (1) - express 기본 [2] (0) | 2024.08.23 |