본문 바로가기
Node.js

익스프레스 웹 서버 만들기 - 미들웨어(morgan, cookieParser, express.json, express.urlencode)

by Programmer.Junny 2025. 1. 13.

1. morgan 미들웨어

1.1. morgan 이란?

 

  • Morgan HTTP 요청 로깅을 위한 Express 미들웨어이다.
  • 요청에 대한 정보를 표준 출력(콘솔)이나 파일 등에 간편하게 기록할 수 있다.
  • 개발 환경에서는 콘솔에, 프로덕션 환경에서는 파일이나 외부 로깅 서비스에 로그를 남기는 데 주로 사용된다.

 

1.2. 설치

npm install morgan

1.3. 사용 방법

const express = require('express');
const morgan = require('morgan');

const app = express();

// Morgan 미들웨어 등록 (기본 포맷: 'combined')
app.use(morgan('combined'));

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(3000, () => console.log('서버가 포트 3000에서 실행 중입니다.'));

require('morgan')으로 모듈을 가져온 후 app.use(morgan('dev')) 혹은 app.use(morgan('combined') 를 해주면 된다.

dev는 짧게 보여줌
combined는 배포시에 주로 사용

2. cookieParser 미들웨어

2.1. cookieParser 란?

 

  • **cookie-parser**는 Express.js 애플리케이션에서 HTTP 요청의 쿠키를 파싱하여, req.cookies 객체로 쉽게 접근할 수 있게 해주는 미들웨어 이다.
  • 쿠키의 값을 자동으로 파싱하여 JavaScript 객체 형태로 제공한다.
  • **서명된 쿠키(signed cookies)**를 지원하여, 쿠키의 무결성을 확인할 수 있다.

 

2.2. 설치

npm install cookie-parser

2.3. 사용 방법

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

// cookie-parser 미들웨어 등록
app.use(cookieParser());

// 라우트 예시
app.get('/', (req, res) => {
  // 클라이언트로부터 받은 쿠키 출력
  console.log('쿠키:', req.cookies);

  // 쿠키 설정
  res.cookie('name', 'John Doe', { maxAge: 900000, httpOnly: true });

  res.send('Hello, World! 쿠키가 설정되었습니다.');
});

app.listen(3000, () => console.log('서버가 포트 3000에서 실행 중입니다.'));

기본적으로 위와 같이 쿠키 사용이 가능하다.

app.use(cookieParser('secretKey'));	//서명된 쿠기

app.get('/', (req, res) => {
	req.signedCookies;	// 이와 같이 서명된 쿠키를 사용할 수 있다.
});

서명된 쿠키 또한 사용할 수 있다.

3. express.json, express.urlencoded 미들웨어

3.1. express.json 란?

 

  • HTTP 요청의 본문이 JSON 형식일 때 이를 파싱하여 **req.body**에 JavaScript 객체로 저장해주는 미들웨어
  • 주로 API 서버에서 클라이언트가 JSON 데이터를 전송할 때 사용된다.

3.2. express.urlencoded 란?

 

  • URL-인코딩된 형식의 요청 본문 파싱.
  • HTML 폼을 통해 데이터를 전송할 때 사용된다.

 

 

3.3. 설치

기본적으로 express에 내장

3.4. 사용 방법

const express = require('express');
const app = express();

// JSON 파싱 미들웨어
app.use(express.json());

// URL-인코딩된 데이터 파싱 미들웨어
app.use(express.urlencoded({ extended: true }));

// 라우트 예시
app.post('/data', (req, res) => {
  console.log(req.body);
  res.send('데이터가 수신되었습니다!');
});

app.listen(3000, () => console.log('서버가 포트 3000에서 실행 중입니다.'));

req.body가 express.json 및 express.urlencoded 로 인해 파싱되어 손쉽게 사용이 가능하다.

최근댓글

최근글

skin by © 2024 ttuttak