-
HTTP API ์๋ต ์ ๋ฆฌ๊ฐ๋ฐ/Spring Boot 2022. 7. 7. 02:28
HTTP ๋ฉ์ธ์ง ๋ฐ๋๋ฅผ ์ง์ ์กฐํํ๊ณ ์ถ์ ๋, ์คํ๋ง MVC๋ ๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ๋ค.
HttpEntity
HTTP header, body ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค.
- ๋ฉ์์ง ๋ฐ๋ ์ ๋ณด๋ฅผ ์ง์ ์กฐํ
- ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐํํ๋ ๊ธฐ๋ฅ๊ณผ ๊ด๊ณ ์์
(@RequestParam X, @ModelAttribute X HttpEntity๋ ์๋ต์๋ ์ฌ์ฉ ๊ฐ๋ฅ)
- ๋ฉ์์ง ๋ฐ๋ ์ ๋ณด ์ง์ ๋ฐํ, ํค๋ ์ ๋ณด ํฌํจ ๊ฐ๋ฅ
- view ์กฐํX
+) HttpEntity ๋ฅผ ์์๋ฐ์ ๋ค์ ๊ฐ์ฒด๋ค๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
RequestEntity
HttpMethod, url ์ ๋ณด๊ฐ ์ถ๊ฐ, ์์ฒญ์์ ์ฌ์ฉ
ResponseEntity
HTTP ์ํ ์ฝ๋ ์ค์ ๊ฐ๋ฅ, ์๋ต์์ ์ฌ์ฉ
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED)
์คํ๋งMVC ๋ด๋ถ์์ HTTP ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฝ์ด์ ๋ฌธ์๋ ๊ฐ์ฒด๋ก ๋ณํํด์ ์ ๋ฌํด์ฃผ๋๋ฐ, ์ด๋ HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ( HttpMessageConverter )๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
@RequestBody
@RequestBody ๋ฅผ ์ฌ์ฉํ๋ฉด HTTP ๋ฉ์์ง ๋ฐ๋ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค.
์ฐธ๊ณ ๋ก ํค๋ ์ ๋ณด๊ฐ ํ์ํ๋ค๋ฉด HttpEntity ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ @RequestHeader ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ง์ ์กฐํํ๋ ๊ธฐ๋ฅ์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐํํ๋ @RequestParam , @ModelAttribute ์๋ ์ ํ ๊ด๊ณ๊ฐ ์๋ค.@ResponseBody
@ResponseBody ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ต ๊ฒฐ๊ณผ๋ฅผ HTTP ๋ฉ์์ง ๋ฐ๋์ ์ง์ ๋ด์์ ์ ๋ฌํ ์ ์๋ค. ๋ฌผ๋ก ์ด ๊ฒฝ์ฐ์๋ view๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
@ResponseBody ์ธ ๊ฒฝ์ฐ์ ์๋ต์ฝ๋๋ฅผ ์ค์ ํ ์ ์๋ค. ๋ง์ฝ ์๋ต์ฝ๋๊ฐ ํ์ํ๋ค๋ฉด @ResponseStatus๋ ResponseEntity๋ฅผ ์ด์ฉํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐธ๊ณ ๋ก ResponseEntity๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ @ResponseBody๊ฐ ์์ด๋ view resolver๋ฅผ ๊ฑฐ์น์ง ์๋๋ค.
//๋์ ์ผ๋ก ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ ์๋ตํ๋ ๊ฒฝ์ฐ @GetMapping("/response-body-json-v1") public ResponseEntity<HelloData> responseBodyJsonV1() { HelloData helloData = new HelloData(); helloData.setUsername("userA"); helloData.setAge(20); return new ResponseEntity<>(helloData, HttpStatus.OK); } //ํ๊ฐ์ง ์๋ต๋ง ์ค์ ํ ๊ฒฝ์ฐ @ResponseStatus(HttpStatus.OK) @GetMapping("/response-body-json-v2") public @ResponseBody HelloData responseBodyJsonV2() { HelloData helloData = new HelloData(); helloData.setUsername("userA"); helloData.setAge(20); return helloData; }
์์ฒญ ํ๋ผ๋ฏธํฐ vs HTTP ๋ฉ์์ง ๋ฐ๋
์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐํํ๋ ๊ธฐ๋ฅ: @RequestParam , @ModelAttribute
HTTP ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ง์ ์กฐํํ๋ ๊ธฐ๋ฅ: @RequestBody
'๊ฐ๋ฐ > Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Http Message Converter ์ด์ผ๊ธฐ(2) (0) 2022.07.07 HTTP Message Converter ์ด์ผ๊ธฐ(1) (0) 2022.07.07 ์คํ๋ง์ด ์ฌ๋ํ ๋์์ธ ํจํด (0) 2022.05.31 ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น - SOLID (0) 2022.05.24 ์คํ๋ง ํ๋ ์์ํฌ(Spring Framework)์ ๋คํ์ฑ(Polymorphism)(1) (0) 2022.02.08