[NodeJS] body-parser

2020. 9. 3. 18:34개발/[NodeJS]

body-parser 란?

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

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

다음과 같은 데이터를 body에 담아 POST request 를 보내고자 한다고 가정하자.

{
  userID : "kyeong",
  password : "kyeong1234"
}

서버단에서 express를 써서 POST request를 처리하는 방법은 아래와 같을 것이다.

var express = require('express')
var app = express()app.post('/profile', function(req, res) => {
  console.log(req.body)
})

그런데, console.log(req.body) 라인에서 undefined Error를 마주하게 된다.

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

(출처: Express Docs)

그렇기 때문에 Post request를 처리하기 위해서는 Body-parser을 사용해야한다.

사용방법

npm install body-parser

모듈을 불러오고, express에 붙여 사용한다.

var express = require('express')
var bodyParser = require('body-parser')var app = express();
app.use(bodyParser().json())app.post('/profile', function(req, res) => {
  console.log(req.body)
})

Upgrade 된 Express.js

Express v4.16.0 기준으로 express.js도 빌트인 body parser를 넣었다. (출처: Express Docs)

그래서 다음과 같이 써도 문제는 해결이 된다.

var express = require('express')
var app = express();
app.use(express.json())app.post('/profile', function(req, res) => {
  console.log(req.body)
})

.

Express 쓸 때, 바디 파서를 따로 임포트하지 않아도 된다.

단, body-parser가 필요한 경우도 있다

body-parser는

JSON과 URL-encoded 형식의 본문 외에도

Raw, Text형식의 본문을 추가로 해석할 수 있다.

Raw는 본문이 버퍼 데이터일 때, Text는 본문이 텍스트 데이터일 때 해석하는 미들웨어이다.

서비스에 적용하고 싶다면 body-parser를 설치한 후 다음과 같이 추가한다.

app.use(bodyParser.raw());
app.use(bodyParser.text());

출처: https://backback.tistory.com/336

'개발 > [NodeJS]' 카테고리의 다른 글

[NodeJS] GreenLock  (0) 2020.09.03