파싱(Parsing)에 대해서 (feat. Cookie-Parser, Body-Parser)

Leticia·2024년 3월 4일
0

Database

목록 보기
5/5
post-custom-banner

파싱(Parsing)이란?

  • 데이터를 의미 있는 구조로 분해하고 해석하는 과정
  • 웹 서버에서 클라이언트로부터 전송된 HTTP 요청 메시지를 받았을 때, 이 요청 메시지를 파싱하여 메서드(method), 경로(path), 헤더(header), 본문(body) 등의 요소로 나누어 처리
  • JSON 형식의 데이터를 파싱한다는 것은 JSON 문자열을 JavaScript 객체로 변환하는 과정
  • JSON 형식의 데이터는 문자열로 전송되므로, 이를 파싱하여 JavaScript 객체로 변환하여 서버에서 사용
const express = require('express');
const app = express();

app.use(express.json());

POST나 PUT과 같은 HTTP 요청에서 express.json() 미들웨어를 사용하면 Express 애플리케이션은 JSON 형식의 req.boty 데이터를 파싱하여 JavaScript 객체로 변환함. 이렇게 변환된 데이터는 req.body 객체에 저장되어 라우터나 컨트롤러에서 사용가능함

파싱... 꼭 해야해?? 안하면 어떻게 되는데?

  • JSON 형태로 보낸 req.body 데이터를 JavaScript 객체 형태로 변환하는 것은 Express 애플리케이션이 클라이언트로부터 받은 데이터를 더 쉽게 다룰 수 있도록 하는 과정임
  • 안하면.... req.body에는 JSON 형식의 데이터가 아닌 일반적인 문자열이 저장됨. 따라서 이 문자열을 JavaScript 객체로 직접 변환하여 사용하려고 하면 오류가 발생

그럼 req.body 파싱 어떻게 하는데?

(1) body-parser 라이브러리 사용

  1. yarn add body-parser 설치
  2. app.js 파일에 코드 추가
import bodyParser from 'body-parser';

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

(2) express.json() 메서드 사용

app.use(express.json());

body-parser 라이브러리vs express.json(), 그 둘이 무슨 차인데 ?

  • 바디파서는 따로 설치해야하는 반면, Express 4.16.0 버전부터 express.json() 메서드가 내장되어 있어서 별도의 설치 없이 사용 있게 됨
  • So, Express 4.16.0 버전 이후에는 express.json() 메서드를 사용하여 JSON 형식의 요청 body를 파싱하는 것이 더 간편하고 권장되는 방식임

이번에는 쿠키다~!

(1) 무엇?

  • Express 프레임워크에서 쿠키를 파싱(parsing)하는 미들웨어
  • 클라이언트가 서버에 요청할 때 쿠키를 포함하여 보내면, 이를 파싱하여 JavaScript 객체로 변환하여 사용할 수 있도록 도와줌

(2) 사용법

  1. 터미널에 `yarn add cookie-parser' 입력
  2. 쿠키 생성하는 코드를 작성한다
  3. cookie-parser 라이브러리로 클라이언트로부터 전송된 쿠키를 파싱하여 JavaScript 객체로 변환한다
    import CookiePaser from ...
    
    app.use(cookieParser());
    를 추가해준다
  4. cookie-parser를 사용하면 파싱된 쿠키가 req.cookies 객체에 저장됨. 이를 통해 이후 다른 HTTP 요청에서도 사용(인증) 가능함
  5. 쿠키-파서는 쿠키만 파싱할뿐, req.body를 js 객체로 파싱하려면 express.json() 미들웨어 사용해야함

(3) 쿠키-파서, 왜 사용해야하는데 ?

  • 일반적으로 클라이언트에 전송되는 쿠키는 텍스트 형식으로 되어있음
  • 쿠키 파서를 사용하면 이러한 텍스트 형식의 쿠키를 JavaScript 객체로 변환하여 서버에서 쉽게 사용가능하기 때문

(4) 이것을 할수 있어요

  • 쿠키 파싱: 클라이언트에서 전송된 쿠키를 쉽게 파싱하여 사용
  • 쿠키 설정: 서버에서 클라이언트로 쿠키를 설정
  • 쿠키 제거: 서버에서 클라이언트로부터 쿠키를 제거

(5) 사용 예시

//app.js

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

const app = express();
app.use(cookieParser());

app.get('/', (req, res) => {
    // 클라이언트로부터 전송된 쿠키 가져오기
    const userCookie = req.cookies.user;

    if (userCookie) {
        // 쿠키가 존재할 경우 처리
        res.send(`Welcome back, ${userCookie}!`);
    } else {
        // 쿠키가 존재하지 않을 경우 처리
        res.cookie('user', 'guest', { maxAge: 900000, httpOnly: true });
        res.send('Hello, guest!');
    }
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});
profile
Hi Hi
post-custom-banner

0개의 댓글