๐Ÿ“„ 1ํŽธ Multipart/form-data๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

huewilliamsยท2022๋…„ 5์›” 23์ผ
12
post-thumbnail

์ตœ๊ทผ ์›น์„ ๊ฐœ๋ฐœํ•˜๋˜ ์ค‘ ๋ฐฑ์—”๋“œ ์š”์ฒญ ์‹œ์— ํŒŒ์ผ๊ณผ JSON ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.
ํ‰์†Œ์— JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ๋Š” Application/json Content Type, ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ๋Š” Multipart/form-data Content Type์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

์กฐ๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
1. ๋‘ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ Application/json์œผ๋กœ ๋ณด๋‚ด๊ธฐ
2. ๋‘ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ Multipart/form-data๋กœ ๋ณด๋‚ด๊ธฐ

Application/json์œผ๋กœ ๋ณด๋‚ด๊ธฐ

๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ Application/json์œผ๋กœ ๋ณด๋‚ด๋ฉด ์•ˆ ๋ ๊นŒ?

์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์€ ์–ด์งธ์„œ ํŒŒ์ผ์€ Multipart/form-data Content-Type์„ ์จ์•ผ ํ•˜๋Š” ์ง€์— ๋Œ€ํ•œ ์ด์œ ์™€ ์—ฐ๊ฒฐ๋œ๋‹ค.
์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ๋จผ์ € limit size, ์ฆ‰ ์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๊ฒ ๋‹ค.
JSON ๊ทœ๊ฒฉ ์ž์ฒด์—์„œ ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ์— ๋Œ€ํ•œ ๋ช…์„ธ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋ณด๋‹ค๋Š”, Json Parser์—์„œ limit size๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

IBM์— ๋ช…์„ธ๋˜์–ด ์žˆ๋Š” JSON parser default limit size (https://www.ibm.com/docs/en/datapower-gateway/10.0.1?topic=20-json-parser-limits)

MS์— ๋ช…์„ธ๋˜์–ด ์žˆ๋Š” .Net ํ”„๋ ˆ์ž„์›Œํฌ์˜ JavaScriptSerializer (https://docs.microsoft.com/ko-kr/dotnet/api/system.web.script.serialization.javascriptserializer.maxjsonlength?view=netframework-4.8)

์œ„์— ์ฐธ์กฐํ•œ ๋‚ด์šฉ๋“ค์ฒ˜๋Ÿผ Json ์ž์ฒด๊ฐ€ ์•„๋‹Œ Json Parser์— ๊ธฐ๋ณธ์ ์œผ๋กœ 4MB ์ •๋„์˜ size limit์ด ๊ฑธ๋ ค์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋Š” 4MB๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ํŒŒ์ผ๋“ค์ด ์ถฉ๋ถ„ํžˆ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— JSON ๊ทœ๊ฒฉ์€ ์‚ฌ์šฉํ•˜๊ธฐ ํž˜๋“ค๋‹ค.


Application/x-www-form-urlencoded๋Š” ์–ด๋–จ๊นŒ?

๋ฌผ๋ก  Json Parser์˜ limit size๋งŒ์ด file ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด Multipart/form-data๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ์•„๋‹ˆ๋‹ค.
์ข€ ๋” ์šฐ๋ฆฌ์—๊ฒŒ ์ง๊ด€์ ์ธ ์ด์œ ๊ฐ€ ์žˆ๋‹ค.

ํŒŒ์ผ์€ ์ฃผ๋กœ HTML์˜ form ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ธฐ์กด์— form์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ๊ฒฉ์ธ Application/x-www-form-urlencoded๊ฐ€ ์กด์žฌํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ทœ๊ฒฉ์—๋„ ํŒŒ์ผ์„ ์ „์†กํ•˜๊ธฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
์ด ๊ทœ๊ฒฉ์€ Body๊ฐ€ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ, ํ‚ค์™€ ๊ฐ’์€ =์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ณ , ๊ฐ ํ•ญ๋ชฉ์ด &๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.

name=huewilliams&age=21

๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•  ๋•Œ๋Š” ๋ฌธ์ž์—ด ๊ฐ’์ด ์•„๋‹Œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ํ™•์ธํ•ด๋ณด๋ฉด
์œ„์ฒ˜๋Ÿผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. Ctrl+F๋กœ ๋ฌธ์ž๋ฅผ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ &๋„ ์ผ๋ถ€ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋‹ค. ์œ„์—์„œ Application/x-www-form-urlencoded๋Š” &๋กœ ๊ฐ ํ•ญ๋ชฉ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์— ์ด๋Ÿฐ ๊ตฌ๋ถ„์ž๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒฐ๋ก ์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.


๊ฒฐ๊ตญ Multipart/form-data!!

์œ„์—์„œ๋Š” ๋‹ค๋ฅธ Content-Type๋“ค์˜ ํ•œ๊ณ„๋ฅผ ์ด์œ ๋กœ ๋“ค์—ˆ์ง€๋งŒ, ์‚ฌ์‹ค Multipart/form-data๊ฐ€ ํ•„์š”ํ•œ ๊ฐ€์žฅ ๊ทผ๋ณธ์ ์ธ ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ๊ฐ์˜ type์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•˜๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ์›๋ž˜ ๋ชฉํ‘œ์˜€๋˜ JSON ๋ฐ์ดํ„ฐ์™€ File ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„  Multipart/form-data๋ฅผ ์ด์šฉํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค!

๊ทธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ƒ์„ธ ๊ตฌํ˜„์€ ํŒŒ์ผ๊ณผ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋ณด๋‚ด๊ธฐ! 2ํŽธ ํฌ์ŠคํŒ…์œผ๋กœ ๋Œ์•„์˜ค๊ฒ ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

https://intrepidgeeks.com/tutorial/html-what-is-multipartform-data-for-file-transfer

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

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ