[node.js & express] body-parser, urlencoded란 무엇인가
1. body-parser
const express = require('express');
const app = express();
app.post('/',function(req,res){
var post = req.body;
console.log(post)
})
Node.js, express를 사용하여 위의 요청에 대한 응답을 처리하면, console.log(post)는 undefined로 출력된다.
즉 req.body 부분이 undefined로 처리된다는 것이다.
그러면 이를 어떻게 해결해야할까? 바로 "body-parser"이다.
"body-parser"는 node.js의 모듈로써, 클라이언트 POST request data의 body로부터 파라미터를 편리하게 추출해주는 역할을 한다.
2) body-parser 모듈 사용법
express v4.16.0 아래 버전들에서는 body-parser를 따로 인스톨해서 사용해야했다.
👉🏻 그러나 Express V4.16.0 기준으로 body-parser가 빌트인 됐다!
그래서 별다른 설치 없이 아래 코드로 모듈을 사용할 수 있다.
app.use(express.urlencoded({extended: false}))
3) 코드의 뜻
body-parser 모듈을 사용할 때, 해당 모듈에 아무 옵션을 주지 않으면, body-parser deprecated undefined extended: provide extended option이라는 문구가 뜬다. 즉 모듈을 사용하려면 urlencoded옵션을 사용하라는 것이다.
urlencoded({extended: })는 어떤 옵션일까?
1) extended
extended 옵션은 true일 경우, 객체 형태로 전달된 데이터내에서 또다른 중첩된 객체를 허용한다는 말이며, false인 경우에는 허용하지 않는다는 것을 의미한다.
2) unlencoded({extend: })의 뜻
extended: true -> 따로 설치가 필요한 qs 모듈을 이용하여 쿼리 스트링 값을 해석
extended: false -> 기본 내장된 querystring 모듈을 사용하여 쿼리 스트링 값을 해석
기존 querystring 모듈과 qs 모듈의 차이는 중첩 객체 처리에 대한 차이로 보면 된다.
-> 일반적으로 false로 셋팅하여 querystring 모듈을 이용하여 쿼리 스트링 값을 해석하는 셋팅이라고 보면 되겠다.
공식 홈페이지 설명
https://expressjs.com/en/4x/api.html#express-json-middleware