미들웨어란?

morgan (로깅)

morgan이 뭐지?

HTTP request의 로그를 보여주는 NodeJS 미들웨어다

Document : https://github.com/expressjs/morgan

설치

npm install morgan
yarn add morgan

How to use

import morgan from 'morgan';

morgan('dev');

이렇게 입력만 해도 간편히 HTTP 요청 로그가 나온다. morgan() 인자로 포맷형식을 넣어야 하는데 tiny, common, combine, short, dev 가 있는데 개인적으로 dev가 제일 괜찮은 것 같다. 자세한건 문서를 읽어보자


helmet (보안)

helmet은 express 앱 보안을 도와주는 미들웨어이다. 만능은 아니지만 도움을 줄 수 있다

Document : https://helmetjs.github.io/docs/

설치

npm install helmet
yarn add helmet

How to use

import express from 'express';
import helmet from 'helmet';

const app = express();

app.use(helmet());

다른 설정도 있지만 간단하므로 문서를 참조하길 바란다


multer (파일 업로드)

multer가 뭐지?

Form 데이터로 파일을 업로드 할 때 multipart/form-data 형식으로 인코딩 하는데, multer는 이것을 다루기 위한 NodeJS 미들웨어다
( multer는 multipart/form-data 가 아닌 Form에서는 동작하지 않는다)

// 꼭 encoding type을 넣어야한다!!!!!!!!!!
 <form action="/upload" method="post" enctype="multipart/form-data"></>

Document : https://github.com/expressjs/multer/blob/master/doc/README-ko.md

설치

npm install multer
yarn add multer

설정

multer를 적용할 파일에 코드를 작성한다

import multer from 'multer';

const upload = multer({ dest: 'uploads/' });
const uploadMiddleware = upload.single('name');

dest : destination 의 약자로 업로드한 파일을 저장할 주소를 뜻한다
single() : single은 파일 한개만 업로드 하는 메서드이고, 인자로 input의 name 속성을 받는다

How to use

업로드 요청과 요청처리 메서드 사이에 upload 미들웨어를 넣으면 된다

app.post('/upload', uploadMiddleware, handleUpload );

handleUpload

const handleUpload = (req,res)=>{
  const { body : { etr1, etr2 }, file } = req;
  console.log(file);
  res.send();
}

주의❗️ 보통 Form 데이터는 body에 들어있지만 multer을 사용하면 파일만 따로 req.file로 들어가있다


Passport(인증)

이건 너무 길어질 것 같아서 따로 포스트로 작성했다