티스토리 뷰
▶ 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
'백엔드 > NodeJS' 카테고리의 다른 글
[NodeJS] sequelize 통해서 MySQL 연동 (2) | 2022.12.27 |
---|---|
[NodeJS] prettier & eslint 설정하기 (0) | 2022.12.27 |
[NodeJS] NodeJS(express) + React 연동하기 (0) | 2022.11.24 |
[NodeJS] nodeJS + mongoDB + EC2 권한 문제 해결하기(배포) (0) | 2022.11.24 |
[NodeJS] NodeJS 처음 시작하기 (2) | 2022.11.20 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 딥러닝
- TypeScript
- styled-components
- Python
- frontend
- 데이터분석
- react
- 자바스크립트
- 프론트엔드
- 파이썬
- testing
- 머신러닝
- 리액트 훅
- 자바
- rtl
- 타입스크립트
- 프론트엔드 기초
- 리액트
- CSS
- react-query
- 프로젝트 회고
- 인프런
- JSP
- 프론트엔드 공부
- 자바스크립트 기초
- 디프만
- HTML
- 스타일 컴포넌트 styled-components
- next.js
- jest
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함