2021. 11. 29. 17:07ใSpring
https://hyejin.tistory.com/265
Spring MVC, Mybatis [2] ๊ฐ๋จํ ์ฌ์ฉ์ ๊ฒ์ํ ๋ง๋ค๊ธฐ
๊ทธ๋์ Spring ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ํด์๋ ์ฌ์ฉ์ ๊ด๋ฆฌ ํ๋ก์ ํธ๋ฅผ ์ด์ ๊ฐ๋จํ์ง๋ง ํ๋ฉด ๊ตฌํ๊น์ง ํด์ ๋ง๋ค์ด ๋ณผ ์์ ์ด๋ค. Spring MVC Model2 ๋ฅผ ํ์ฉํด์ ํ ์์ ์ด๋ค. 1. Users ํ ์ด๋ธ Users ํ ์ด๋ธ์ userid,
hyejin.tistory.com
์ด ๋ ๋ง๋ค์๋ ๊ฐ๋จํ ์ฌ์ฉ์ ๊ด๋ฆฌ ํ๋ก์ ํธ์ ๋ํด์ Spring RESTful ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด๋ณผ ์์ ์ด๋ค.
https://hyejin.tistory.com/271
Spring REST, RESTful API, XML, JSON , Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
1. Open API(Application Programming Interface) : Open API๋ ๊ฐ๋ฐฉํ api๋ก ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ฐฉ๋์ด ์๋ ์ํ์ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๋ค. ๋๋ถ๋ถ Open api๋ REST ๋ฐฉ์์ผ๋ก ์ง์ํ๋ค. 2. REST(R..
hyejin.tistory.com
์ฌ๊ธฐ์ ๋์์๋ 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
POSTMAN CHROME IS DEPRECATED DOWNLOAD THE UPDATED POSTMAN NATIVE APPS Postman Chrome is deprecated and is missing essential, new…
chrome.google.com
์๋๋ ์ฑ ์คํ ๋์ ์ค์น ์๋ ์ถ๊ฐ์๋ ๊ทธ๋ฐ ๋ฒํผ์ผ ๊ฒ์ด๋ค.
๊ทธ ๋ฒํผ์ ๋๋ฌ์ฃผ๊ณ ๊ตฌ๊ธ ์์ด๋๋ก ๋ก๊ทธ์ธ ํด์ฃผ๋ฉด 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 |