module_Express

miin·2022년 4월 4일
0

Express & node.js

목록 보기
5/10
post-thumbnail

fs

  • node.js에 내장되어 있는 모듈이라서 바로 불러올 수 있다
  • json 파일을 읽기위해 사용
//CommonJs modules
const fs = require('fs');

//ES Modules
import fs from 'fs';
  • 비동기 API와 동기API를 모두 제공한다(적합한 API 판단하여 사용)
  • 비동기 메서드
    -> 마지막 인자로 콜백함수를 받고 아무값도 반환하지 않는다
  • 동기 메서드
    -> 결과값을 반환하며 예외를 일으킬 수 있다
    -> Sync로 끝나기 때문에 쉽게 비동기/동기 구분 가능
  • 요청된 쿠키를 쉽게 추출할 수 있도록 해주는 미들웨어
  • node.js에 내장되어 있는 모듈이라서 바로 불러올 수 있다

사용

const express = require('express')
const cookieParser = require('cookie-parser')
const app = express()

app.use(cookieParser())

app.get('/', (req, res) => {
  
  // 쿠키 생성
  // res.cookie('쿠키이름', '쿠키값', [option])
  res.cookie('cookieName', 'cookieValue');
  
  // 쿠키 읽기
  console.log('Cookies: ', req.cookies) ;
  
  // 쿠키 삭제
  // res.clearCookie('쿠키이름', [option])
  res.clearCookie('cookieName')
}
        
app.listen(8080);

express-session

npm i express-session
const session = require('express-session')

  • 세션 데이터는 쿠키자체에 저장되지 않고, 세션 ID에만 저장된다. 세션 데이터는 서버측에 저장된다
  • cookie-parser는 필요없음
  • Session(Server를 통한 인증과 인가의 방식)
    1. 사용자가 요청을 보낸다.
    2. 서버는 이를 해석해서 DB에 일치하는 유저가 있는지 확인한다.
    3. 서버는 인증된 사용자의 식별자와 랜덤의 문자열로 세션 ID를 만든다
    4. 사용자에게 세션 ID를 전달한다
    5. 사용자는 세션 ID를 저장해서 이용한다.
  • 사용법
const session = require('express-session');

//세션 초기설정
app.get('/', function(req, res){
  sess = req.session;
});

//세션 변수 설정
app.get('/login', function(req, res){
  sess = req.session;
  sess.username = '홍길동' 
//또는 sess.[키이름] = 값 으로 세션 변수를 설정할 수 있음
});

//세션 변수 사용
app.get('/', function(req, res){
  sess = req.session;
  console.log(sess.username);
});

//세션 제거(로그아웃)
req.session.destroy(function(err){
  //여기서 세션에 액세스할 수 없음
});

app.use(session({
  key: process.env.SECURITY_SESSION_KEY,
  secret: process.env.SECURITY_SESSION_SECRET,
  resave: false,
  saveUninitialized: false,
}));
  • secret: 쿠키를 임의로 변조하는것을 방지하기 위한 sign값. 원하는 값을 넣으면 된다
  • resave: 세션을 언제나 저장할지 정하는 값 express-session
  • saveUninitialized: uninitialized세션은 새로 생긴 세션이다. 변경되지 않은 세션을 의미한다. Documentation에서 이 값을 true로 설정하는것을 권장한다.

morgan

  • 요청에 대한 정보를 콘솔에 기록해준다
    ex) GET / 200 51.267 ms - 1539
  • 함수의 인자로 dev, short, common, combined 등을 줄 수 있다
  • 인자에 따라 콜솔에 나오는 로그가 다르다
  • 보통 개발시에는 short나 dev를 많이 쓰고, 배포시에는 common, combined를 많이 사용한다
    ex)
const logger = require('morgan');

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

인자가 dev인 경우
GET / 200 51.267 ms - 1539의 의미

0개의 댓글