블로깅 챌린지 - express

Heechang Jeong·2023년 4월 21일
0

✍ 복습 자료

  • nodemon

    서버를 자동으로 재시작
    서버 코드에 수정 사항이 생길 때마다 매번 서버를 재시작하기는 불편하다.

    개발용으로만 사용할 것을 권장한다.
    배포 후에는 서버 코드가 빈번하게 변경될 일이 없으므로 nodemon을 사용하지 않아도 된다.

  • express

    express 내부에 http 모듈이 내장되어 있어서 서버의 역할을 할 수 있다.

    app.set('port', process.env.PORT || 3000);
    서버가 실행될 포트를 설정
    process.env 객체에 PORT 속성이 있으면 그 값을 사용하고, 없으면 기본값으로 3000번 포트를 이용한다는 의미.


const express = require('express');

const app = express();

app.set('port', process.env.PORT || 3000);
 
app.get('/', (req, res) => {
	res.send('Hello, Express');
});

app.listen(app.get('port'), () => {
	console.log(app.get('port'), '번 포트에서 대기 중');
});


  • 미들웨어

    express의 핵심
    요청과 응답의 중간에 위치하기 때문에 미들웨어라고 부른다.
    요청과 응답을 조작해 기능을 추가하기도 하고, 나쁜 요청을 걸러낼 수도 있다.

    미들웨어는 app.use와 함께 사용된다.
    app.use(미들웨어) 형태.
    미들웨어는 위에서부터 아래로 순서대로 실행되면서 요청과 응답 사이에 특별한 기능을 추가할 수 있다.
    next를 실행하지 않으면 다음 미들웨어가 실행되지 않는다.
    미들웨어 장착 순서에 따라 어떤 미들웨어는 실행되지 않을 수 있다는 것을 기억하자.


app.use((req, res, next) => {
	console.log("모든 요청에 다 실행된다.");
    next();
});
  • 미들웨어가 실행되는 경우

    app.use(미들웨어) : 모든 요청에서 미들웨어 실행
    app.use('/abc', 미들웨어) : abc로 시작하는 요청에서 미들웨어 실행
    app.post('/abc', 미들웨어) : abc로 시작하는 POST 요청에서 미들웨어 실행



1. morgan

기존 로그 외에 추가적인 로그를 볼 수 있다.
인수로 dev, combined, common, short, tiny 등을 넣을 수 있다.

개발 환경에서는 dev
배포 환경에서는 combined

app.use(morgan('dev'));

2. static

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

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

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

3. cookied-parser

요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만든다.
서명된 쿠키가 있는 경우, 제공한 비밀키를 통해 해당 쿠키가 내 서버가 만든 쿠키임을 검증할 수 있다.

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

4. express-session

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

app.use(session({
	resave: false,
    saveUninitialized: false,
    secret: process.env.COOKIE_SECRET,
    cookie: {
    	httpOnly: true,
        secure: false,
    },
    name: 'session-cookie',
}));

0개의 댓글