2021. 11. 29. 17:07ใSpring
https://hyejin.tistory.com/265
์ด ๋ ๋ง๋ค์๋ ๊ฐ๋จํ ์ฌ์ฉ์ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ๋ํด์ Spring RESTful ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด๋ณผ ์์ ์ด๋ค.
https://hyejin.tistory.com/271
์ฌ๊ธฐ์ ๋์์๋ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ,
Spring Bean Configuration ํ์ผ ์ค์ ์ ๋ช๊ฐ์ง ์ถ๊ฐํด์ค์ผํ๋ค.
<annotation-driven/> ํ๊ทธ๋ Spring MVC์ ํ์ํ Bean๋ค์ ์๋์ผ๋ก ๋ฑ๋กํด์ฃผ๋ ํ๊ทธ๋ก
annotation-driven ํ๊ทธ๊ฐ JSON๊ณผ ๊ด๋ จํด์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํด์ค๋ค.
<default-servlet-handler/> ํ๊ทธ๋ DispatcherServlet์ ๋ณ๊ฒฝ๋ url-pattern๋๋ฌธ์ ํ์ํ ํ๊ทธ ์ค์ ์ด๋ค.
1. Spring MVC ๊ธฐ๋ฐ RESTful ์น ์๋น์ค ๊ตฌํ ์ ์ฐจ
1๏ธโฃ RESTful ์น ์๋น์ค๋ฅผ ์ฒ๋ฆฌํ RestfulController ํด๋์ค ์์ฑ ๋ฐ Spring Bean์ผ๋ก ๋ฑ๋ก
2๏ธโฃ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ฉ์๋์ @RequestMapping, @RequestBody์ @ResponseBody ์ด๋ ธํ ์ด์ ์ ์ธ
3๏ธโฃ REST Client Tool(Postman)์ ์ฌ์ฉํด์ ๊ฐ๊ฐ์ ๋ฉ์๋๋ฅผ ํ ์คํธํ๋ค.
4๏ธโฃ Ajaxํต์ ์ ํ์ฌ RESTful ์น ์๋น์ค๋ฅผ ํธ์ถํ๋ HTML ํ์ด์ง ์์ฑ
2. Postman ์ค์น ๋ฐ ์คํ
https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop/related
์๋๋ ์ฑ ์คํ ๋์ ์ค์น ์๋ ์ถ๊ฐ์๋ ๊ทธ๋ฐ ๋ฒํผ์ผ ๊ฒ์ด๋ค.
๊ทธ ๋ฒํผ์ ๋๋ฌ์ฃผ๊ณ ๊ตฌ๊ธ ์์ด๋๋ก ๋ก๊ทธ์ธ ํด์ฃผ๋ฉด Postman์ ํตํด ํ ์คํธ๋ฅผ ์งํํ ์ ์๋ค.
3. ์ฌ์ฉ์ ๊ด๋ฆฌ RESTful ์น ์๋น์ค method
์ฌ์ฉ์ ๋ชฉ๋ก ์กฐํ - > GET
ํน์ ์ฌ์ฉ์ ์กฐํ -> GET
์ฌ์ฉ์ ๋ฑ๋ก - > POST
์ฌ์ฉ์ ์์ - > PUT
์ฌ์ฉ์ ์ญ์ - > DELETE
4. @RequestBody, @ResponseBody
: Spring MVC์์๋ ํด๋ผ์ด์ธํธ์์ ์ ์กํ XML์ด๋ JSON ๋ฐ์ดํฐ๋ฅผ Controller์์ Java ๊ฐ์ฒด๋ก ๋ณํํด์ ๋ฐ์ ์ ์๋ ๊ธฐ๋ฅ(์์ )์ ์ ๊ณตํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ Java ๊ฐ์ฒด๋ฅผ XML์ด๋ JSON์ผ๋ก ๋ณํํด์ ์ ์กํ ์ ์๋ ๊ธฐ๋ฅ(์ก์ )์ ์ ๊ณตํ๊ณ ์๋ค.
@RequestBody
-> HTTP Request Body๋ฅผ Java ๊ฐ์ฒด๋ก ์ ๋ฌ ๋ฐ์ ์ ์๋ค.
@ResponseBody
-> Java ๊ฐ์ฒด๋ฅผ HTTP Response Body๋ก ์ ์กํ ์ ์๋ค.
5. ์ฌ์ฉ์ ๋ชฉ๋ก ์กฐํ
getUserList ๋ฉ์๋์ @ResponseBody ์ด๋ ธํ ์ด์ ์ด ์๋ค. ์ด๋ MappingJacksonHttpMessageConverter๊ฐ ๋ฆฌํด๊ฐ์ธ UserModel ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ๋ณํํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ค.
6. ํน์ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ
์ด๋ฒ์๋ ResponseBody ์ด๋ ธํ ์ด์ ์ด ์๊ธฐ ๋๋ฌธ์ UserModel ๊ฐ์ฒด๋ฅผ JSONํํ๋ก ๋ฐํํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ค.
7. ์ฌ์ฉ์ ์ ๋ณด ๋ฑ๋ก
์ด๋ฒ์ ์ฌ์ฉ์ ๋ฑ๋ก์ ํ ๋์๋ ์ง์ JSON์ผ๋ก ์ ๋ ฅํด์ผํ๊ธฐ ๋๋ฌธ์ headers๋ฅผ ์ค์ ํด์ค์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ JSON์ผ๋ก ์ ๋ ฅํ ์ฌ์ฉ์๋ฅผ @RequestBody ์ด๋ ธํ ์ด์ ์ด ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํด์ฃผ๋ ์์ ์ ์ฒ๋ฆฌํ๋ค.
Postman์์ ๋ฑ๋ก์ด๊ธฐ ๋๋ฌธ์ POST์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ํค๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๊ฐ ์ ๋ ฅ ํ send ๋ฒํผ์ ๋๋ฅด๋ฉด
user10๊ฐ ๋ฑ๋ก๋๊ฑธ ํ์ธํ ์ ์๋ค.
8. ์ฌ์ฉ์ ์ ๋ณด ์์
์ ๋ณด ์์ ์ญ์ ๊ฐ์ ์ ๋ ฅํด์ค์ผํ๊ธฐ ๋๋ฌธ์ hearder์ ์ค์ ํด์ค์ผํ๋ฉฐ, ์ด๋ฒ์ ์์ ์ด๋ผ PUT ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
PUT์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ํค๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ํ ๊ฐ๋ค์ ์์ฑํด์ฃผ๊ณ SEND ๋ฒํผ์ ๋๋ฅด๋ฉด
์ ๋ณด๊ฐ ์์ ๋๊ฒ์ ํ์ธํ ์ ์๋ค.
9. ์ฌ์ฉ์ ์ ๋ณด ์ญ์
์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ญ์ ํ ๋๋ ํด๋น ์ฌ์ฉ์ id๋ฅผ url ํ์์ผ๋ก ๋ฐ๊ธฐ ์ํด @PathVariable ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉฐ
method๋ DELETE๋ฅผ ์ฌ์ฉํ๋ค.
user10์ด ์ญ์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring Ajax, jQuery (0) | 2021.11.30 |
---|---|
Spring httpmessagenotwritableexception :No converter found for return value of type ์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2021.11.29 |
Spring REST, RESTful API, XML, JSON , Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น (0) | 2021.11.29 |
Spring MVC ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ (0) | 2021.11.29 |
Spring Validation ํผ ๋ฐ์ดํฐ ๊ฒ์ฆ Validator, @Vaild (0) | 2021.11.26 |