HTTP Request
HTTP Request
HTTP ์์ฒญ์ผ๋ก ์ค๋ ๋ฐ์ดํฐ๋ ์ฃผ๋ก 3๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค.
GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
/url**?username=hello&age=20**
๋ฉ์์ง ๋ฐ๋ ์์ด, URL์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ
๊ฒ์, ํํฐ, ํ์ด์ง์์ ์ฃผ๋ก ์ฌ์ฉ
POST - HTML Form
content-Type: application/x-www-form-urlencoded
๋ฉ์์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ
ํ์ ๊ฐ์ , ์ํ ์ฃผ๋ฌธ, HTML Form ์ฌ์ฉ
HTTP message Body
HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ
์ฃผ๋ก JSON ์ฌ์ฉ
์ฌ์ค GET ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์ ์ก ๋ฐฉ์์ด๋ , POST HTML Form ์ ์ก ๋ฐฉ์์ด๋ ๋ ๋ค ํ์์ด ๊ฐ์ผ๋ฏ๋ก ๊ตฌ๋ถ์์ด ์กฐํํ ์ ์๋ค.
โ ์์ฒญ ํ๋ผ๋ฏธํฐ(request parameter) ์กฐํ
์์ฒญ ํ๋ผ๋ฏธํฐ ์กฐํ
์ด๋ฌํ ์์ฒญ ํ๋ผ๋ฏธํฐ ์กฐํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
HttpServlet
@RequestParam
@ModelAttribute
HttpServlet
HttpServlet
์ request๋ก๋ถํฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ๊บผ๋ด์ผ ํ๋ค.
@RequestParam
์คํ๋ง์ด ์ ๊ณตํ๋ @RequestParam
์ ์ด์ฉํ์ฌ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
@RequestParam
๋ฅผ ํตํด ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ผ๋ก ๋ฐ์ธ๋ฉ ํ๋ค. @RequestParam์ name(value)
์์ฑ์ด ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋๋ค.
๋ง์ฝ HTTP ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ด ๋ณ์ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ฉด (โusernameโ)
๋ถ๋ถ์ ์๋ต ๊ฐ๋ฅํ๋ค.
@RequestParam์ ์ต์
required: ํ๋ผ๋ฏธํฐ ํ์ ์ฌ๋ถ
๊ธฐ๋ณธ๊ฐ์ด ํ๋ผ๋ฏธํฐ ํ์(true)
ํ๋ผ๋ฏธํฐ ์ด๋ฆ๋ง ์๊ณ ๊ฐ์ด ์์ด๋ ํต๊ณผ๋๋ค.
defaultValue: ํ๋ผ๋ฏธํฐ ๊ธฐ๋ณธ๊ฐ ์ค์
๋น ๋ฌธ์์ ๊ฒฝ์ฐ์๋ ์ค์ ํ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ฉ
@ModelAttribute
์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ฒด์ ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค. ์คํ๋ง์ ์ด ๊ณผ์ ์ @ModelAttribute
๋ฅผ ํตํด ์๋ํํด์ค๋ค.
HTTP message Body
์์ฒญ ํ๋ผ๋ฏธํฐ์ ๋ค๋ฅด๊ฒ HTTP ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ง์ ๋์ด์ค๋ ๊ฒฝ์ฐ๋ @RequestParam, @ModelAttribute ์ฌ์ฉ X (๋จ, HTML Form ํ์์ ์ ์ธ)
๋จ์ ํ
์คํธ
HttpServlet
request.getInputStream()
InputStream, OutputStream โ ์คํ๋ง MVC๊ฐ ์ง์
requestBodyString(InputStream inputStream, Writer responseWriter)
InputStream(Reader): HTTP ์์ฒญ ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ์ ์ง์ ์กฐํ
OutputStream(Writer): HTTP ์๋ต ๋ฉ์์ง์ ๋ฐ๋์ ์ง์ ๊ฒฐ๊ณผ ์ถ
HttpEntity โ ์คํ๋ง MVC๊ฐ ์ง์
requestBodyStringV3(HttpEntity<String> httpEntity)
HttpEntity: HTTP header, body ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํ
HttpEntity๋ ์๋ต์๋ ์ฌ์ฉ ๊ฐ๋ฅ
@RequestBody โ ์คํ๋ง MVC๊ฐ ์ง์
requestBodyStringV4(@RequestBody String messageBody)
HTTP ๋ฉ์์ง ๋ฐ๋ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค.
JSON
๋ง์ฝ ์ด์ ์ฒ๋ผ HttpServlet, @RequestBody๋ฅผ ํตํด String์ผ๋ก ๋ฐ๋๋ค๋ฉด ObjectMapper
๋ฅผ ํตํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค.
์ฆ, String์ผ๋ก ์ธ์๋ฅผ ๋ฐ๊ณ ๋ฌธ์๋ก ๋ JSON ๋ฐ์ดํฐ์ธ messageBody
๋ฅผ ObjectMapper๋ฅผ ํตํด ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
์คํ๋ง์ ์ด ๋ถ๋ถ ๋ํ @ModelAttribute ์ฒ๋ผ ํ๋ฒ์ ๊ฐ์ฒด๋ก ๋ณํ์ํฌ ์ ์๋ค.
๋ฌผ๋ก HttpEntity๋ ๊ฐ๋ฅํ๋ค.
HttpEntity, @RequestBody๋ฅผ ์ฌ์ฉํ๋ฉด HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๊ฐ HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฌธ์๋ ๊ฐ์ฒด ๋ฑ์ผ๋ก ๋ณํํด์ค๋ค.
Last updated