본문 바로가기
NodeJS

[NodeJS] 실무에서 자주 사용하는 패키지

by Yeoseungwon 2023. 7. 1.
728x90

콘솔

$ npm i morgan cookie-parser express-session dotenv

 

dotenv를 제외한 다른 패키지는 미들웨어이다. 

dotenv는 process.env를 관리하기 위해 설치했다.

 

.env파일 생성

COOKIE_SECRET=cookiesecret

dotenv패키지가 .env파일을 읽어서 process.env로 만들어준다.

COOKIE_SECRET 에 cookiesecret 값이 할당. 키=값 

비밀키들을 소스 코드에 그대로 적어두면 키도 같이 유출 되기 때문에 별도의 파일로 관리한다.

 

 

app.js 수정 

const express = require('express');
const path = require('path');
//추가
const morgan = require('morgan');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const dotenv = require('dotenv');

//추가
dotenv.config();

const app = express();
app.set('port', process.env.PORT || 3001); 

//추가
app.use(morgan('dev'));
app.use('/', express.status(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'), '번 포트에서 대기 중..');
});

 

1. morgan : 요청과 응답에 대한 정보를 콘솔에 기록한다.  app.use('dev')

GET                  /             500            9.820ms -         51              해당 로그는 morgan 미들웨어에서 나오는 것이다. 

[http 메서드] [주소] [http 상태 코드] [응답속도]-[응답 바이트]

인수로 dev외에 combined, common, short, tiny 등을 넣을 수 있다. 

 

2.static : static 미들웨어는 정적인 파일들을 제공하는 라우터 역할을 한다.  설치할 필요 없이 express 객체 안에서 꺼내쓰면된다.

app.use('요청 경로', express.static('실제 경로'));

현재 public 폴더가 지정되어 있다. 

 

3.body-parser : 요청의 본문에 있는 데이터를 해석해서 req.body 객체로 만들어주는 미들웨어

익스프레스에 body-parser 미들웨어의 일부기능이 내장되어 있으므로 설치할 필요가 없다. 단 직접 설치해야 하는 경우도 있다. 

보통 폼 데이터나 AJAX 요청의 데이터를 처리한다. 단, 멀티파트(이미지, 동영상, 파일) 데이터는 처리하지 못한다.  이 경우는 multer 모듈사용하면됨 .

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

요청 데이터 종류

JSON은 json형식의 데이터 전달 방식

URL-encoded 는 주소 형식으로 데이터를 보내는 방식. 

폼 전송은 URL-encoded 방식을 주로 사용한다. {extended: false} 라는 옵션이 있는데, 이 옵션이 false 이면 노드의 querystring 모듈을 사용해 쿼리스트링을 해석하고, true이면 qs 모듈을 사용해 쿼리스트링을 해석한다. qs는 내장 모듈이 아니라 npm패키지이다 

 

기존에는 POST와 PUT 요청의 본문을 전달받으려면 req.on('data')와 req.on('end')로 스트림을 사용해야 했는데

body-parser를 사용하면 그럴 필요가 없다. 이 패키지가 내부적으로 스트림을 처리해 req.body에 추개한다. 

 

4. cookie-parser

 

5.express-session

 

 

728x90