[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());
'개발 > [NodeJS]' 카테고리의 다른 글
[NodeJS] GreenLock (0) | 2020.09.03 |
---|