(Node.js) 자주 사용하는 미들웨어

호두파파·2021년 8월 17일
0

Node.js

목록 보기
17/25

미들웨어는 익스프레스의 핵심 요소이다.

미들웨어
요청와 응답의 중간(middle)에 위치해 미들웨어라고 일컫는다. 미들웨어는 요청과 응답을 조작해 기능을 추가하기도 하고, 나쁜 요청을 걸러내는 일 또한 수행한다.

미들웨어는 app.use와 함께 사용한다.
대표적으로 자주 사용하는 미들웨어의 종류와 쓰임에 대해서 알아보자.

morgan

요청과 응답에 대한 정보를 콘솔에 기록한다.
인수로 dev 외에 combined, common, short, tiny 등을 넣을 수 있다.

static

정적인 파일들을 제공하는 라우터 역할을 한다. 기본저긍로 제공되기에 따로 설치할 필요 없이 express 객체 안에서 꺼내 장착하면 된다.

app.use('/', express.static(path.join(__dirname, 'public'));

정적파일들을 알아서 제공해준다. 만약 요청 경로에 해당하는 파일이 없으면 알아서 내부적으로 next를 호출한다.

body-parser

요청의 본문에 있는 데이터를 해석해서 req.body 객체로 만들어주는 미들웨어이다. 보통 폼 데이터나 AJAX 요청의 데이터를 처리한다. 단, 멀티파트(이미지, 동영상, 파일) 데이터는 처리하지 못한다. 이것을 처리하고 싶다면 multer 모듈을 사용하면 된다.

app.use(express.json());
app.use(express.urlencoded({ extended: false });

cookie-parser는 요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만든다.

// app.js
app.use(cookieParser(비밀키));

해석된 쿠키들은 req.cookies 객체에 들어간다.
cookie-parser가 쿠키를 생성할 때 쓰이는 것은 아니다. 쿠키를 생성/제저하기 위해서는 res.cookie, res.clearCookie 메서드를 사용해야한다. res.cookie(키, 값, 옵션) 형식으로 사용한다.

res.cookie('name', 'hodoopapa', {
  expires: new Date(Date.now() + 900000),
  httpOnly: true, 
  secure: true,
});
res.clearCookie('name', 'hodoopapa', { httpOnly: true, secure: true });

express-session

세션 관리용 미들웨어이다. 로그인 등의 이유로 세션을 구현하거나 특정 사용자를 위한 데이터를 임시적으로 저장해둘 때 매우 유용하다. 세션은 사용자별로 req.session 객체안에 유지된다.

app.use(session({
  resave: false,
  seveUninitialized: false,
  secret: process.env.COOKIE_SECRET,
  cookie: {
    httpOnly: true,
    secure: false,
  },
  name: 'session-cookie',
}));
  • resave: 요청이 올때 세션에 수정사항이 생기지 않더라도 세션을 다시 저장할지 설정하는 옵션
  • saveUninitialized: 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지 설정하는 것
  • cookie: express-session은 세션 관리 시 클라잉너트에 쿠키를 보낸다.
    1) httpOnly: 클라이언트에서 쿠키를 확인하지 못하도록 true로 설정
    2) secure: https가 아닌 환경에서도 사용할 수 있도록 true로 설정

출처

Node.js 교과서(조현영 저)

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글