티스토리 뷰

백엔드/NodeJS

[NodeJS] body-parser란?

doeunnkimm 2022. 12. 2. 18:00

▶ body-parser란?

 

1. body-parser란?

body-parser는 node.js의 모듈입니다.

클라이언트 POST/PUT request data의 body로부터 파라미터를 편리하게 추출합니다.

 

2. body-parser가 없을 때의 문제점: undefined

만약에 버튼을 클릭했을 때 서버에게 다음과 같은 데이터를 body에 담아 POST request를 보내기 위해

아래와 같은 온클릭 함수를 정의했다고 해 봅시다.

const onClickPost = () => {
    const data = { title: "프론트엔드", label: "안녕하세요" };

    axios.post("/api/hello", data).then((res) => {
      console.log(res);
      setData(res.data);
    });
  };

 

이때 서버에서 express를 써서 클라이언트의 POST request를 처리하는 방법은 다음과 같습니다.

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

app.post("/api/hello", (req, res) => {
  console.log(req.body);
});

 

이제 클라이언트와 서버를 둘다 실행해 주고

클라이언트에서 버튼을 눌러 데이터를 담은 body를 POST request하게 되면

 

일단 우리가 원하는 바는 서버 콘솔에 req.body

즉 보낸 데이터가 그대로 출력되어야 합니다.

 

하지만 실제로 실행을 해보게 되면 undefined 라고 출력이 되게 됩니다.

그 이유는 req.body는 body-parser를 사용하기 전에는 디폴트 값으로 Undefined이 설정되기 때문입니다.

 

따라서 이 문제를 해결하기 위해서는 body-parser를 사용하면 되겠습니다.

 

3. body-parser 설치, 불러오기

npm install body-parser

설치를 완료했다면 서버 코드로 돌아가서 아래와 같이 수정해 줍니다.

const express = require("express");
const bodyparser = require("body-parser");
const app = express();

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

app.post("/api/hello", (req, res) => {
  console.log(req.body);
});

이제는 body의 data를 읽어낼 수 있습니다.

 

4. Express의 body parser

express.js도 빌트인 body parser가 존재하기도 합니다.

따라서 body-parser 모듈을 따로 설치 및 import 하지 않더라도 다음과 같은 방법으로 해결 가능합니다.

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

app.use(express.json())

app.post("/api/hello", (req, res) => {
  console.log(req.body);
});

 

728x90
LIST
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함