๐Ÿ” body-parser ๋ฏธ๋“ค์›จ์–ด

์ง€์€ยท2022๋…„ 10์›” 15์ผ
0

Node.js Library

๋ชฉ๋ก ๋ณด๊ธฐ
8/14

body-parser

: Node.js์—์„œ ์š”์ฒญ body๋ฅผ ํŒŒ์‹ฑํ•ด์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด๋กœ 4 ๊ฐ€์ง€์˜ parser๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • JSON body parser
  • Raw body parser
  • Text body parser
  • URL-encoded form body parser

body-parser (๊ณต์‹ ๋ฌธ์„œ)


body-parser ์„ค์น˜

Express 4.16.0 ์ด์ „

  • npm install๋กœ body-parser ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•œ๋‹ค.
npm install body-parser

Express 4.16.0 ์ดํ›„ โœ…

  • Express 4.16.0 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” body-parser๋ฅผ ๋”ฐ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ , body-parser๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Express ๋‚ด์žฅ ๋ฏธ๋“ค์›จ์–ด express()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
const express = require('express'); // express ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

express() ๊ณต์‹ ๋ฌธ์„œ


๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” JSON body parser(express.json())์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

express.json()

express.json([options]) : express.json()์€ HTTP ์š”์ฒญ body(payload)์˜ json ํ˜•์‹์˜ ํ…์ŠคํŠธ๋ฅผ JavaScript ๊ฐ์ฒด๋กœ ํŒŒ์‹ฑํ•ด์ค€๋‹ค.

์‚ฌ์šฉ๋ฒ•

์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

app.use(bodyParser.json());

์š”์ฒญ body(payload) ์–ป๋Š” ๋ฒ•

const express = require('express'); // express ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
const app = express();              // express ์„œ๋ฒ„ ์‹คํ–‰

app.use(express.json());            // JSON body parser๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

app.post('/', function(request, response){
  	console.log(request.body);      // ์š”์ฒญ ๋ฐ”๋”” ์ถœ๋ ฅ
});

app.listen(3000);                   // 3000๋ฒˆ ํฌํŠธ์—์„œ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

โžก๏ธ JSON body parser๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š” ์—†์ด request.body์— ์š”์ฒญ์˜ body๊ฐ€ ๋‹ด๊ธด๋‹ค.


Options

์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ค‘๊ด„ํ˜ธ{} ์•ˆ์— ์‚ฌ์šฉํ•  ์˜ต์…˜์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

app.use(express.json({strict: false}));
์˜ต์…˜๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
inflatetruetrue๋กœ ์„ค์ •ํ•˜๋ฉด ์••์ถ•๋œ(deflated) ์š”์ฒญ body์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.
false๋กœ ์„ค์ •ํ•˜๋ฉด ์••์ถ•๋œ ์š”์ฒญ body๋ฅผ ์ฒ˜๋ฆฌ๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค.
limit100kb์ตœ๋Œ€ ์š”์ฒญ body์˜ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•œ๋‹ค. ์ˆซ์ž์ผ ๊ฒฝ์šฐ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ ๊ฐ’์€ ํŒŒ์‹ฑ์„ ์œ„ํ•ด ๋ฐ”์ดํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „๋‹ฌ๋œ๋‹ค.
revivernullreviver ์˜ต์…˜์€ JSON.parse()์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ง์ ‘ ์ „๋‹ฌ๋œ๋‹ค.
์ด ์ธ์ž์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ JSON.parse์— ๋Œ€ํ•œ MDN ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
stricttruetrue๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋งŒ ํŒŒ์‹ฑํ•˜๊ณ ,
false๋กœ ์„ค์ •ํ•˜๋ฉด JSON.parse()๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์„ ํ—ˆ์šฉํ•œ๋‹ค.
(์ฆ‰, ์ˆซ์ž, ๋ฌธ์ž์—ด ๋“ฑ์˜ ์›์‹œ ํƒ€์ž… ๋ฐ์ดํ„ฐ๋„ ํŒŒ์‹ฑํ•ด์ค€๋‹ค.)
typeapplication/json๋ฏธ๋“ค์›จ์–ด๊ฐ€ ํŒŒ์‹ฑํ•  ๋ฏธ๋””์–ด์˜ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ ๋ฌธ์ž์—ด, ๋ฌธ์ž์—ด์„ ๋‹ด์€ ๋ฐฐ์—ด, ํ•จ์ˆ˜๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
(๊ธฐ๋ณธ๊ฐ’ application/json : ์š”์ฒญ ๋ณธ๋ฌธ์˜ ํƒ€์ž…์ด json์ธ ์š”์ฒญ๋งŒ ํŒŒ์‹ฑํ•œ๋‹ค.)
verify-์ด ์˜ต์…˜์€ verify(req, res, buf, encoding)์„ ํ˜ธ์ถœํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ buf๋Š” ์š”์ฒญ body์˜ Buffer์ด๋ฉฐ, endcoding์€ ์š”์ฒญ์˜ ์ธ์ฝ”๋”ฉ์ด๋‹ค.
profile
๋ธ”๋กœ๊ทธ ์ด์ „ -> https://janechun.tistory.com

0๊ฐœ์˜ ๋Œ“๊ธ€