Study/Node.js
express [morgan, bodyParser, cookieParser, express-session]
Minhhk
2023. 10. 8. 13:08
morgan
npm i morgan
설치 후, 서버 localhost: 에 접속하면
기존 로그 외에 추가적인 로그를 볼 수있다.
app.use(morgan("dev")); // 개발 시
app.use(morgan("combined")); // 배포 시_정보가 자세히 뜸
GET / 200 3.012 ms - 16
middleWare Using...
GET /favicon.ico 304 0.491 ms - -
dev 모드 기준으로
GET / 500 7.409 ms - 50 -> 각각
[HTTP 메서드] [주소] [HTTP 상태 코드] [응답 속도] - [응답 바이트]를 의미
bodyParser
-> 요청의 본문에 있는 데이터를 해석해서 req.body 객체로 만들어주는 미들웨어
express 의 bodyParser은 아래와 같은 미들웨어를 사용!
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
....
Raw는 요청의 본문이 버퍼 데이터일 때, Text는 텍스트 데이터일 때 해석하는 미들웨어
버퍼나 텍스트 요청을 처리할 필요가 있다면 body-parser를 설치한 후 다음과 같이 추가하자!
npm i body-parser
const bodyParser = require('body-parser');
app.use(bodyParser.raw());
app.use(bodyParser.text());
cookieParser
-> 요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만듬
res.cookie(키, 값, 옵션)
쿠키를 생성 하려면 res.cookie,
제거 하려면 res.clearCookie
_쿠키를 지우려면, 키와 값 외에 옵션도 정확히 일치해야 쿠키가 지워짐.
단, expires나 maxAge 옵션은 일치할 필요가 없다.
res.cookie('name', 'kim', {
expires: new Date(Date.now() + 1000000),
httpOnly: true,
secure: true,
});
res.clearCookie('name', 'kim', { httpOnly: true, secure: true });
express-session
->
세션 관리용 미들웨어
로그인 등 세션을 구현하거나 특정 사용자를 위한 데이터를 임시적으로 저장해둘 때 사용하며,
사용자별로 req.session 객체 안에 유지!
- cookie-parser 미들웨어 뒤에 놓는 것이 안전
- resave는 요청이 올 때 세션에 수정 사항이 생기지 않더라도 세션을 다시 저장할지 설정하는 것
- saveUninitialized는 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지 설정하는 것
- 세션 쿠키의 이름은 name 옵션으로 설정. 기본 이름은 connect.sid
app.use(session({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false,
},
name: 'session-cookie',
}));
->
세션을 한 번에 삭제하려면
req.session.destroy
메서드를 호출