nclovehs8572
@nclovehs8572
Reviews Written
3
Average Rating
5.0
Posts
Q&A
@ModelAttribute ๋ฐ์ธ๋ฉ์ด ๋์ง ์์ต๋๋ค.
HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ 2๋ถ JSON ๊ฐ์ข ์์ 7:50 ๋ถ๋ถ์ด ์ง๊ธ ์ ๊ฐ ๋ฌธ์ ๋๋ ธ๋ ๋ด์ฉ๊ณผ ๊ฐ์ ์ด์ ๋ผ๊ณ ์๊ฐ ๋ฉ๋๋ค. (๊ฐ์ข๋ฅผ ์ฒ์๋ถํฐ ๋ณด์ง ์์ ๋ํ์ ๋ ๋ง์ด ๊ณต๋ถํ๊ณ ์์์ ๊ฐ์ฌํฉ๋๋ค ^^;) ๊ทธ๋์ HTTP Message ๊ตฌ์กฐ๋ฅผ ์ฐพ์ ๋ณด์์ต๋๋ค. https://developer.mozilla.org/ko/docs/Web/HTTP/Messages HTTP Message๋ ์์์ค, Header, Body์ผ๋ก ์ด๋ฃจ์ด ์ง๋๋ฐ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๋ ์์ฒญ์ ๋ณธ๋ฌธ์ด ํ์๊ฐ ์๊ณ , ์ ๋ฐ์ดํธ๋ฅผ ํ๊ธฐ ์ํ ์์ฒญ ์ ๋ณด์ ๋ณธ๋ฌธ์ ์ด์ฉํ๋ค. ๊ทธ๋์ POST ์์ฒญ์ ๋ณด๋ด๋ ์ ๋ณด๋ Body์ ๋ค์ด๊ฐ๊ณ @RequestBody ์ด๋ ธํ ์ด์ ์ ๊ทธ HTTP Message Body ๊ฐ์ ์ฝ๋๋ค. ๋ผ๊ณ ์ดํด ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ดํด๊ฐ ์ ๋๋ ๋ถ๋ถ์ด ์์ต๋๋ค. HTML ์์ Submit ํ ๋์ Form data์ ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํ๋ Query String์ Http Message์์ Body์ ๋ค์ด๊ฐ์ง ์์ผ๋ฉด Header ๋ถ๋ถ์ ๋ค์ด ๊ฐ๊ฒ ๋๋๊ฑด๊ฐ์? PostMan ํ๋ก๊ทธ๋จ๋ฐ Body ํญ์ form-data, x-www-form-urlencoded, raw, binary๊ฐ ํจ๊ป ์๋๋ฐ ์ค์ Post Man์์ ์์ฒญ์ ๋ณด๋ผ ๋๋ ๋ค๋ฅธ ๊ตฌ์กฐ์ Http Message๊ฐ ์์ฑ๋๋ ๊ฑด๊ฐ์? ์ค๋๋ ์ข์ ํ๋ฃจ ๋ณด๋ด์ธ์~
- 0
- 7
- 9.2K
Q&A
@ModelAttribute ๋ฐ์ธ๋ฉ์ด ๋์ง ์์ต๋๋ค.
Http Request ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ ธ ์๋์ง ์ ํํ ๋ชฐ๋ผ์ ์ดํด๊ฐ ์ ๋์๋ ๋ด ๋๋ค. ์์ฒญ์ ๋ณด๋ด๋ฉด Header์ Body๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค๊ณ ์๊ฐ ํ์์ต๋๋ค. ๋ง์์ฃผ์ ๋๋ก ๋ค์ ๊ฐ์ข๋ ๋ค์ ๋ณด๊ณ Form data์ Request Body (Payload)์ ๋ํด์๋ ์ฐพ์๋ด์ผ ๊ฒ ์ต๋๋ค. ์์ ์๋ ๊ทธ๋ฅ ๊ทธ๋ ค๋ ค๋ ํ๋ Expressjs Request Parser ๊ฐ ๋ ๊ฐ์ง ๋ค๋ฅธ ํ์ ์ ์ฒ๋ฆฌํ๋ ์ด์ ๋ ๋ง์ ์ฃผ์ ๋ด์ฉ๊ณผ ๋์ผํ ์ด์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐ๋๋๊ตฐ์. app.use(bodyParser.json()) // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded ๋งค์ผ๋ฐค ๋ต๋ณ ๋ฌ์์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ํ๋ณตํ ํ๋ฃจ ๋ณด๋ด์ธ์.
- 0
- 7
- 9.2K
Q&A
@ModelAttribute ๋ฐ์ธ๋ฉ์ด ๋์ง ์์ต๋๋ค.
์ ๋ ๊ทธ๋ฅ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Spring 4.3.13 Release๋ฅผ ์ฌ์ฉํ ํ ํ๋ก์ ํธ์์ ๊ธฐ์ ๋ ๊ฐ์ข๋ฅผ ๋ฐ๋ผํด๋ ํฐ ๋ฌธ์ ๋ ์์ ๊ฒ์ด๋ค ๋ผ๊ณ ์๊ฐ์ ๊ฐ๊ณ @ModelAttribute๋ฅผ ์ฌ์ฉํด ๋ณด๋ ค๊ณ ํ ๊ฒ์ธ๋ฐ, ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํด์ ์ง๋ฌธ์ ๋๋ ธ์ต๋๋ค. ํ์ง๋ง ์ด์ ๋ถํฐ ํ๋ฃจ ์ข ์ผ ์ด๊ฒ ์ ๊ฒ ๊ณ ์ณ ๋ณด์๋ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํด์ (ContentType์ ๋ฌธ์ ๊ฐ ์์ด์ ๋ฐ์ธ๋ฉ์ ํ์ง ๋ชป ํ๋ ๊ฒ์ธ๊ฐ ์๊ฐ ํ์ต๋๋ค) ์ค๋ ์์นจ "ํธ๋ค๋ฌ ๋ฉ์๋ 4๋ถ ํผ ์๋ธ๋ฐ" ๊ฐ์ข์ ๋์ผํ๊ฒ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ์๋ก ์์ฑํด์ ํ ์คํธ ํด๋ณด์์ต๋๋ค. 1. ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ ์์ฑ web, thymeleaf ์ฐธ์กฐ 2. Person Vo class ์์ฑ (getter, setter ์์ฑ) private int age; private String firstName; private String lastName; private boolean gender; 3. MainController ์์ฑ @Controller public class MainController { @GetMapping("/person") public String getPerson(@ModelAttribute("person") Person person, Model model) { return "/person"; } @PostMapping("/person") @ResponseBody public Person person(@ModelAttribute("person") Person person, Model model) { return person; } } 4. templates ํ์์ person.html ์์ฑ Title ์ด๋ ๊ฒ ์ค๋นํด์ ์ค์ ํ๋ก์ ํธ Run ํ์ localhost:8080/person ์ ์ ํ ๊ฐ์ ์ฑ์ submit์ ํ๋ฉด person ๊ฐ์ฒด๊ฐ json ํ์์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ํ์ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ๊ฐ์ข์์ ๋ณด์ฌ์ฃผ์ ๋๋ก postman์ ์คํํด์ - Get ๋ฐฉ์์ผ๋ก ํธ์ถํด์ html ๊ฒฐ๊ณผ๊ฐ ํ์ ๋๋ ๊ฒ์ ํ์ธ (์ ์ ๋์) - POST ๋ฐฉ์ - form-data ๋ฐฉ์ Header ์ถ๊ฐ ๋์ง ์์์ > ์ ์ ๋์ - x-www-form-urlencoded ๋ฐฉ์ Header์ Content-Type = application/x-www-form-urlencoded ์๋ ์ถ๊ฐ ๋์์ > ์ ์ ๋์ - raw ๋ฐฉ์ Header์ Content-Type = application/json ์๋ ์ถ๊ฐ ๋์์ { // ์์ฒญ ๊ฐ "age": 99 , "firstName": "Nathan" , "lastName": "Cho" , "gender": true } > ๊ฐ์ด ์ด๊ธฐํ ์ํ์ธ Person ๊ฐ์ฒด๊ฐ ์ ๋ฌ ๋จ. ์ ์ด ๊ฒฝ์ฐ์ ๊ฐ์ด ๋ฐ์ธ๋ฉ ๋์ง ์๋ ๊ฒ์ธ๊ฐ์? (์ํ์ง ์์ ๊ฒฐ๊ณผ์ ๋๋ค. age, gender์ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฐ์ ๋ณด๋ด๋ Bad Request ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.) > ์ด ๊ฒฝ์ฐ์๋ @PostMapping ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ ์ปจํธ๋กค๋ฌ ํจ์์์ @ModelAttribute ๋์ @RequestBody ์ด๋ ธํ ์ด์ ์ ์ด์ฉํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ ์ธ๊ฐ์? (@RB๋ฅผ ์ฌ์ฉํ๋๋ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.) > @RequestBody์ @ModelAttribute ์ด๋ ธํ ์ด์ ์ด ์ ํํ๊ฒ ์ด๋ ํ ์ํฉ์์ ์ฌ์ฉ์ ํด์ผ ๋ง๋๊ฒ์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๊ธด~ ์ง๋ฌธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. PS - ์ถ๊ฐ ํ ์คํธ @ModelAttribute ๋ถ์์ ๋ form-data ๋ฐฉ์: ๋ฐ์ธ๋ฉ ์ ์ x-www-form-urlencoded ๋ฐฉ์: ๋ฐ์ธ๋ฉ ์ ์ raw - json ๋ฐฉ์: ๋ฐ์ธ๋ฉ ๋์ง ์์ @RequestBody ๋ถ์์ ๋ form-data ๋ฐฉ์: 415 Unsupported Media Type x-www-form-urlencoded ๋ฐฉ์: 415 Unsupported Media Type raw - json ๋ฐฉ์: ๋ฐ์ธ๋ฉ ์ ์
- 0
- 7
- 9.2K
Q&A
@ModelAttribute ๋ฐ์ธ๋ฉ์ด ๋์ง ์์ต๋๋ค.
๋ต๋ณ ์ฃผ์ ๋ด์ฉ์ ์ ๊ฐ ์ ์ดํดํ์ง ๋ชป ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ดํด๋ถํ ๋๋ฆฝ๋๋ค. 1. ์์ฒญ ๋ณธ๋ฌธ์ ์๋ ๊ฐ์ ๋ฐ์ธ๋ฉ ๋ฐ์ผ๋ ค๋ฉด @RequestBody๋ ๊ฐ์ด ์ฌ์ฉํด์ผ ํฉ๋๋ค. > @ModelAttribute @RequestBody TestVo testVo ์ด๋ ๊ฒ ์จ์ผ 2๊ฐ์ ์ด๋ ธํ ์ด์ ์ ํจ๊ป ์ฌ์ฉ ํ๋ค๋ ๋ง์์ด์ ๊ฐ์? ์๋๋ฉด Post ์์ฒญ์ ๋ฐ์ ๋๋ @ModelAttribute ๋์ @RequestBody ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๋ง์์ด์ ๊ฐ์? 2. @RequestBody๊ฐ ์์ ๋๋ request attribute์ ๋ค์ด ์๋ ๊ฐ๋ค๋ก ๋ฐ์ธ๋ฉ์ ํ๋๋ฐ, ๋ณดํต ํ๋ฉด์์ form ์๋ธ๋ฐํ๊ฑฐ๋, URL ๋ค์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ฃผ๋ฉด ๊ทธ์ชฝ์ผ๋ก ๋ค์ด๊ฐ์ฃ . > Post ์์ฒญ์ผ ๋๋ง Http Message ์์ Request Body (์์ฒญ ๋ณธ๋ฌธ) ์ด ์์ฑ๋์ด ์ ๋ฌ ๋๋๋ฐ @ModelAttribute๋ก๋ ๊ทธ ๊ฐ์ ์ฝ์ ์ ์๋ค๋ ๋ง์์ด์ ๊ฐ์? Http Message์ ๊ด๋ จํด์๋ ์๋ ๋งํฌ ์ฐธ๊ณ ํ์ต๋๋ค. https://developer.mozilla.org/ko/docs/Web/HTTP/Messages ### ๋ณธ๋ฌธ์ ์์ฒญ์ ๋ง์ง๋ง ๋ถ๋ถ์ ๋ค์ด๊ฐ๋๋ค. ๋ชจ๋ ์์ฒญ์ ๋ณธ๋ฌธ์ด ๋ค์ด๊ฐ์ง๋ ์์ต๋๋ค. GET, HEAD, DELETE , OPTIONS์ฒ๋ผ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๋ ์์ฒญ์ ๋ณดํต ๋ณธ๋ฌธ์ด ํ์๊ฐ ์์ต๋๋ค. ์ผ๋ถ ์์ฒญ์ ์ ๋ฐ์ดํธ๋ฅผ ํ๊ธฐ ์ํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ๋ณดํต (HTML ํผ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋) POST ์์ฒญ์ผ ๊ฒฝ์ฐ์ ๊ทธ๋ ์ต๋๋ค. ### method = RequestMethod.GET ๊ณผ (@ModelAttribute MyType myType)๋ฅผ ์ฌ์ฉํ๋ฉด myType์ ๊ฐ์ด ์ฑ์์ง๋๋ฐ. method = RequestMethod.POST๋ฅผ ํ์ ๋๋ ์ฑ์์ง์ง๊ฐ ์์ต๋๋ค. ๊ฐ์ข์์ @Test postEvent() ํ ์คํธ์์ post ๋ฐฉ์์ผ๋ก๋ ๋ฐ์ ์ ์๋ ๊ฒ์ ๋ณด์ฌ ์ฃผ์ จ๋๋ฐ. ์ ์ ๋ RequestMethod.POST ๋ฐฉ์์ผ๋ก @ModelAttribute ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ ๋ ๊ฐ์ด ๋ฐ์ธ๋ฉ ๋์ง ๋ชปํ๋์ง ๋๋ฌด ๊ถ๊ธํฉ๋๋ค. ps ์ ํฌ๋ธ ์์์์ ํ ์คํธ ์ฝ๋ ์์ฑ ๊ด๋ จ ๋ด์ฉ์ ๋ง์ ํ์ ๊ฒ์ ๋ค์๋๋ฐ... ์ ๋ ์์ฑ์ ํ์ง ์์์ ๋ถ๋๋ฝ์ต๋๋ค...
- 0
- 7
- 9.2K




