Spring RESTful ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ํ”„๋กœ์ ํŠธ (@RequestBody, @ResponseBody, GET, POST, PUT, DELETE, Postman ์„ค์น˜ ๋ฐ ํ…Œ์ŠคํŠธ )

2021. 11. 29. 17:07ใ†Spring

728x90

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. ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ

RestFulUserController.java

getUserList ๋ฉ”์„œ๋“œ์— @ResponseBody ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๋‹ค. ์ด๋Š” MappingJacksonHttpMessageConverter๊ฐ€ ๋ฆฌํ„ด๊ฐ’์ธ UserModel ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

 

 

6. ํŠน์ • ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ 

RestFulController.java

์ด๋ฒˆ์—๋„ ResponseBody ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— UserModel ๊ฐ์ฒด๋ฅผ JSONํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

 

 

7. ์‚ฌ์šฉ์ž ์ •๋ณด ๋“ฑ๋ก 

์ด๋ฒˆ์— ์‚ฌ์šฉ์ž ๋“ฑ๋ก์„ ํ•  ๋•Œ์—๋Š” ์ง์ ‘ JSON์œผ๋กœ ์ž…๋ ฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— headers๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  JSON์œผ๋กœ ์ž…๋ ฅํ•œ ์‚ฌ์šฉ์ž๋ฅผ @RequestBody ์–ด๋…ธํ…Œ์ด์…˜์ด ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

Postman์—์„œ ๋“ฑ๋ก์ด๊ธฐ ๋•Œ๋ฌธ์— POST์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ํ—ค๋”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๊ฐ’ ์ž…๋ ฅ ํ›„ send ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 

 

user10๊ฐ€ ๋“ฑ๋ก๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

8. ์‚ฌ์šฉ์ž ์ •๋ณด ์ˆ˜์ • 

 

์ •๋ณด ์ˆ˜์ • ์—ญ์‹œ ๊ฐ’์„ ์ž…๋ ฅํ•ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— hearder์„ ์„ค์ •ํ•ด์ค˜์•ผํ•˜๋ฉฐ, ์ด๋ฒˆ์—” ์ˆ˜์ •์ด๋ผ PUT ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

PUT์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ํ—ค๋”๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ •ํ•  ๊ฐ’๋“ค์„ ์ž‘์„ฑํ•ด์ฃผ๊ณ  SEND ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 

 

์ •๋ณด๊ฐ€ ์ˆ˜์ •๋œ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

9. ์‚ฌ์šฉ์ž ์ •๋ณด ์‚ญ์ œ 

์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž id๋ฅผ url ํ˜•์‹์œผ๋กœ ๋ฐ›๊ธฐ ์œ„ํ•ด @PathVariable ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ 

method๋Š” DELETE๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

user10์ด ์‚ญ์ œ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

728x90