Parser๋ ๋ฌด์์ ์๋ฏธํ๋๊ฐ?
๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ฐ ์ํ๋ ํํ์ ๋ฐ์ดํฐ๋ก ‘๊ฐ๊ณต'ํ๋ ๊ณผ์ ์ parsing ์ด๋ผ ํ๋ฉฐ ๊ทธ ๊ณผ์ ์ ์ํํ๋ ๋ชจ๋ ํน์ ๋ฉ์๋๋ฅผ parser ๋ผ ์ผ์ปซ๋๋ค.
๋ด๊ฐ ๋ชจ๋ฅด๋ ์ธ์ด๋ฅผ ๋ด๊ฐ ์ํ๋ ์ธ์ด์ ๊ตฌ์กฐ๋ก ๋ฐ๊ฟ์ฃผ๋ ์ผ์ข ์ ๊ตฌ๋ฌธ ํด์๊ธฐ๋ผ๊ณ ๋งํ ์๋ ์๋ค.
parser๋ ๊ตฌ๋ฌธ ํด์์ ํ ๋ฟ ๋ฒ์ญ์ ํ์ง ์๋๋ค. ๋ฒ์ญ์ ์ญํ ์ compiler์์ ๋ด๋นํ๋ค.
๋ด๊ฐ ์ํ๋ ํ์์ ๋ง์ถฐ ํด์ํ๋ ์ฉ๋์ด๋ฏ๋ก bodyParser ๋ฟ๋ง ์๋๋ผ cookieParser, JSON.parse, JSON.stringify ..๋ฑ ํ์์ ์ข ๋ฅ๋ ์ ์ ์์ด ๋ง๋ค.
๊ทธ๋ ๋ค๋ฉด bodyParser๋ ๋ฌด์์ ํ์ฑํ๋๊ฐ?

Contains key-value pairs of data submitted in the request body.
By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer.
express ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ๋ฏธ๋ค์จ์ด ์์ดreq.body ์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ์ผ๋กundefined ๊ฐ ์ค์ ๋์ด ์์ผ๋ฏ๋ก bodyParser, multer์ ๊ฐ์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ๋ฐ์ดํฐ ๊ฐ์ ์ ๊ทผํด์ผ ํ๋ค๋ ์๋ด๋ฅผ ์ฐพ์ ์ ์๋ค.
ํด๋ผ์ด์ธํธ ์ธก์์ API post ์ put ๋ฉ์๋๋ก ์์ฒญ์ (get delete ๋ ๋ถ๊ฐํ๋ค. ๋งํฌ ์ฐธ๊ณ ) body ๋ฅผ ํฌํจํ์ฌ ๋ณด๋ผ ์ ์๋๋ฐ ์ด ๊ฐ์ ์๋ฒ ์ธก์์ ๋ฐ๋๋ค๊ณ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ์๋๊ณ ์๋ฒ ๋ด์์ ํด์ ๊ฐ๋ฅํ ํํ๋ก ๋ณํํด์ผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ด๋ API ์์ฒญ์์ ๋ฐ์ body ๊ฐ์ ํ์ฑํ๋ ์ญํ ์ ์ํํ๋ ๊ฒ์ด bodyParser ๋ผ๋ ๋ฏธ๋ค์จ์ด์ด๋ค.
BodyParser
HTTPpost put ์์ฒญ์ request body ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ์ ์ฝ์ ์ ์๋ ๊ตฌ๋ฌธ์ผ๋ก ํ์ฑํจ๊ณผ ๋์์ req.body ๋ก ์ ๋ ฅํด์ฃผ์ด ์๋ต ๊ณผ์ ์์ ์์ฒญ์ body ํ๋กํผํฐ๋ฅผ ์๋ก์ด ์ธ ์ ์๊ฒ ํด์ฃผ๋ ๋ฏธ๋ค์จ์ด
express 4.16.0 ๋ฒ์ ์์๋ bodyParser๊ฐ express generator์ ๋ด์ฅ๋์ด ์์ด ๋ฐ๋ก ์ค์นํ์ง ์์๋
app.use(express.json());
app.use(express.urlencoded( {extended : false } ));
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ฐ
ํ์ฌ ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์๋ 4.16.1 ๋ฒ์ ์์๋ bodyParser๊ฐ ๋ค์ ๋จ์ด์ ธ ๋์จ ๊ฒ ๊ฐ๋ค. ์ค์น๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ปค๋งจ๋ ๋ผ์ธ์์ ์๋์ ๋ช
๋ น์ด๋ก ์ค์นํ ํ
npm i body-parservar
express = require('express') var
bodyParser = require('body-parser')
var app = express() // parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false })) // parse application/json
app.use(bodyParser.json())
์ฑ, ๋ผ์ฐํธ ๋ฑ ์ํ๋ ๋ ๋ฒจ์์ ์๋์ ๊ฐ์ด ์ฐ๊ฒฐ์ํค๋ฉด ๋๋ค. ๋งํฌ ์ฐธ๊ณ
์ด๋ ๊ฒ ์ค์ ํ ํ ํด๋ผ์ด์ธํธ ์ธก์์ { name: 'yejinh', job: ...} ์ ๊ฐ์ JSON ํ์์ ๋ฐ๋๋ฅผ ๋ณด๋ด๋ฉด ์๋ฒ ์ธก์์ req.body ํน์ req.body.name, req.body.job ๋ฑ์ผ๋ก ํด๋น ๋ฐ์ดํฐ์ ๊ณง๋ฐ๋ก ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
urlencoded({ extended: false });
bodyParser ๋ฏธ๋ค์จ์ด์ ์ฌ๋ฌ ์ต์ ์ค์ ํ๋๋ก false ๊ฐ์ผ ์ node.js์ ๊ธฐ๋ณธ์ผ๋ก ๋ด์ฅ๋ queryString, true ๊ฐ์ผ ์ ๋ฐ๋ก ์ค์น๊ฐ ํ์ํ npm qs ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
_queryString The querystring module provides utilities for parsing and formatting URL query strings. _qs A querystring parsing and stringifying library with some added security.
queryString ๊ณผ qs ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ ๋ค url ์ฟผ๋ฆฌ ์คํธ๋ง์ ํ์ฑํด์ฃผ๋ ๊ฐ์ ๋งฅ๋ฝ์ ์์ผ๋ qs๊ฐ ์ถ๊ฐ์ ์ธ ๋ณด์์ด ๊ฐ๋ฅํ ๋ง ๊ทธ๋๋ก extended ํ์ฅ๋ ํํ์ด๋ค.
๊ธฐ๋ณธ์ด true ๊ฐ์ด๋ qs ๋ชจ๋์ ์ค์นํ์ง ์๋๋ค๋ฉด ์๋์ ๊ฐ์ด false ๊ฐ์ผ๋ก ๋ฐ๋ก ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
app.use(bodyParser.urlencoded({ extended: false });
'๐ Back > ๐งฉ Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [npm] Node์ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ, ์์ฃผ ์ฐ๋ ๋ช ๋ น์ด ๋ชจ์ (0) | 2021.08.21 |
|---|---|
| SPA(single page app)์์ webpack์ ์ฌ์ฉํ๋ ์ด์ (0) | 2021.05.20 |
| [๋ฐ๋ฒจ&์นํฉ] IE, Safari์์ Javascript๊ฐ ์๋ํ์ง ์์๋ ์ด์ (0) | 2021.05.18 |
| 504 Gateway Timeout ์ค๋ฅ ๋ฐ์(Nginx) (0) | 2021.05.18 |
| Helmet: contentSecurityPolicy(์ธ๋ถ js์คํฌ๋ฆฝํธ) ์ค๋ฅ ํด๊ฒฐ (0) | 2021.04.30 |