@RequestParam, @RequestBody, @ModelAttribute
@RequestParam
Query Parameter๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์
ํ๋ผ๋ฏธํฐ๋ช ์ ์ง์ ์ง์ ํด์ค ์๋ ์๊ณ , (์๋์ name) ํ๋ผ๋ฏธํฐ๋ช ๊ณผ ๋์ผํ ๋ณ์๋ช ์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๋ฐ์ธ๋ฉ๋๋๋ก ํ ์๋ ์๋ค. (์๋์ password)
๊ธฐ๋ณธ์ ์ผ๋ก ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ ํ์๋ก ์ ๋ฌ๋์ด์ผ ํ๋ฉฐ ์๋ตํ๋ฉด 400 ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง๋ง, required์ ๊ฐ์ false๋ก ์ค์ ํ์ฌ ์๋ตํ๋๋ก ํ ์ ์๋ค. (์๋์ password)
์์ฑ์๋ฅผ ํตํ ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฅํ๋ค.
์์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ @RequestParam์ผ๋ก ๋ฐ๊ณ ์ ํ๋ค๋ฉด, name๋ง์ ๋๊ฒจ์ฃผ๊ฑฐ๋ name๊ณผ password๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
์ ๋ฌ๋์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ ๋ํดํธ ๊ฐ์ ์ง์ ํ ์ ์๋ค.
defaultValue
์ต์ ์ ์ด์ฉํ๋ค.
@RequestBody
JSON ํ์์ผ๋ก ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ Java Object๋ก ๋ฐ์์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์
HttpMessageReader
๊ฐ Request Body๋ก ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ @RequestBody ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ๊ฐ์ฒด๋ก ์ญ์ง๋ ฌํ๋ฅผ ์ํํ๋ค.Spring์์ JSON์ ์ญ์ง๋ ฌํ๋
Jackson2HttpMessageConverter
๊ฐ ์ํํ๋ค. ์ด ๊ฒฝ์ฐ Setter ๋์Reflection
์ ์ด์ฉํด์ ๊ฐ์ด ํ ๋น๋๋ค. ๋ฐ๋ผ์ POST ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ @RequestBody์ ํด๋์ค๋ Setter๋ฅผ ๊ฐ์ง์ง ์์๋ ๋๋ค.
GET๊ณผ ๊ฐ์ด Request Body๊ฐ ์กด์ฌํ์ง ์๋ HTTP ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ๋ Query String์ผ๋ก ์ ๋ฌ๋๋ค. ๋ฐ๋ผ์ ์ญ์ง๋ ฌํ๊ฐ ์ํ๋๋ ๊ฒ์ด ์๋๋ผ
WebDataBinder
์ ์ํด ๋ฐ์ธ๋ฉ๋๋ค.WebDataBinder
๋ Setter๋ฅผ ์ด์ฉํด์ ๋ฐ์ธ๋ฉ์ ์ํํ๋ค.
@ModelAttribute
Model์ Attribute๊ฐ ์กด์ฌํ๋ค๋ฉด ์ด์ ์ ๊ทผํ ์ ์๋ค.
Http Servlet ์์ฒญ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ๊ณผ ๋ฉ์๋ ์ธ์์ ์ด๋ฆ์ด ์ผ์นํ๋ค๋ฉด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
์ด ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ํจ๊ป ์ํ ๊ฐ๋ฅ
์ฆ, ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๊ฐ๋ณ ๋ณํ ์์ ์์ด๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅ
์ฆ @ModelAttribute๋ก ์ ์ธํ ๋ณ์์๋ Query Parameter, Form Data, Multipart๊ฐ ๋ชจ๋ ๋ฐ์ธ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์์ ๋ ๊ฐ๋ @RequestParam, @RequestBody๋ฅผ ์ด์ฉํด ๋ฐ์ ์ ์์ผ๋ฏ๋ก @ModelAttribute๋ ์ฃผ๋ก ํ์ผ(Multipart)์ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์์๋ก ๋์ํ๋ค.
ModelAttribute ์ธ์คํด์ค ์์ฑ
WebExchangeDataBinder
๊ฐ ๋ค์์ ์ํQuery Parameter์ Form Field์ ์ด๋ฆ์ ๋ฐ์ธ๋ฉํ Object ํ๋๋ช ๊ณผ ๋น๊ต
์ผ์นํ๋ค๋ฉด ๋ฐ์ธ๋ฉ (์ด ๊ณผ์ ์์ ํ์ ๋ณํ์ด ํ์ํ๋ค๋ฉด ๋ณํ)
๋ฐ์ธ๋ฉ์ ์คํจํ๋ฉด
WebExchangeBindException
์ด ๋ฐ์ํ๋ค. ์ด๋ฅผ ํตํด ์ ํจ์ฑ ๊ฒ์ฌ ๊ฐ๋ฅ
Last updated