๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“• Spring Framework/Spring ๊ฐœ๋… ์ •๋ฆฌ

2022.05.08 ใ€ŒRestFulํ•œ api? & ResponseEntity์˜ ์‚ฌ์šฉใ€

by GroovyArea 2022. 5. 8.
์–ด๊น€ ์—†์ด ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์ด๋‹ค. ์ผ์ฃผ์ผ ์ „ View๋ฅผ ์—†์• ๊ณ  ์ข€ ๋” Back์— ์ง‘์ค‘๋œ api๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ดˆ์ ์„ ๋งž์ท„๋‹ค. 
handler ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋‹จ์ˆœํžˆ json ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ฃผ๋ฉด ๋˜๋Š” ๊ฑฐ ์•„๋‹ˆ๋ƒ? ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ์ง€๋งŒ ๊ฒ€์ƒ‰์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋ณด๋‹ˆ ์ •๋ง ํ™•์‹คํ•˜๊ฒŒ ์•Œ๊ธฐ ์ „๊นŒ์ง€๋Š” ํ•จ๋ถ€๋กœ ์ƒ๊ฐํ•˜์ง€ ๋ง์ž๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ๋‹ค.. ์–ด๋ ดํ’‹์ด ๋ฐฐ์› ๋˜ rest api๊ฐ€ ๋– ์˜ฌ๋ž๊ณ  ์ œ๋Œ€๋กœ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์ด์šฉ์„ ํ•ด์„œ restfulํ•œ api๋ฅผ ๋งŒ๋“ค์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์— ๊ฐœ๋…์ •๋ฆฌ๋ฅผ ๊ฒฐ์‹ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ ResponseEntity์˜ ์‚ฌ์šฉ์ด ๋งŽ์€๋ฐ ์ด ํƒ€์ž…์„ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€๋„ ํ•œ๋ฒˆ ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค.

Rest๊ฐ€ ์ •ํ™•ํžˆ ๋ญ˜๊นŒ??

Representational State Transfer -> ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธ

์ฆ‰ REST๋ž€ 

  1. HTTP URI(Uniform Resource Identifier)๋ฅผ ํ†ตํ•ด ์ž์›(Resource)์„ ๋ช…์‹œํ•˜๊ณ ,
  2. HTTP Method(POST, GET, PUT, DELETE)๋ฅผ ํ†ตํ•ด
  3. ํ•ด๋‹น ์ž์›(URI)์— ๋Œ€ํ•œ CRUD Operation์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

 

REST ๊ตฌ์„ฑ ์š”์†Œ

  1. ์ž์›(Resource) : HTTP URI
  2. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„(Verb) : HTTP Method
  3. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„์˜ ๋‚ด์šฉ (Representations) : HTTP Message Pay Load

 

REST์˜ ํŠน์ง•

  1. Server-Client(์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ)
  2. Stateless(๋ฌด์ƒํƒœ)
  3. Cacheable(์บ์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)
  4. Layered System(๊ณ„์ธตํ™”)
  5. Uniform Interface(์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ)

REST๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • Http ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ
  • ๋ฒ”์šฉ์„ฑ์„ ๋ณด์žฅํ•จ
  • API ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•… ๊ฐ€๋Šฅ
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•จ!

 

REST API๋ž€?

REST์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” API

 

REST์˜ ์„ค๊ณ„ ๊ทœ์น™

  1. URI๋Š” ๋ช…์‚ฌ๋ฅผ, ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
  2. ๋งˆ์ง€๋ง‰์— / ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. (๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ)
  3. ์–ธ๋”๋ฐ” ๋Œ€์‹  ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉ
  4. ํŒŒ์ผ ํ™•์žฅ์ž๋Š” URI์— ํฌํ•จํ•˜์ง€ ์•Š์Œ
  5. ํ–‰์œ„ ์ž์ฒด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Œ.

1๋ฒˆ ์˜ˆ์‹œ
2๋ฒˆ ์˜ˆ์‹œ
3๋ฒˆ ์˜ˆ์‹œ
4๋ฒˆ ์˜ˆ์‹œ
5๋ฒˆ ์˜ˆ์‹œ

 

HttpEntity ํด๋ž˜์Šค

Http ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์— ํ•ด๋‹นํ•˜๋Š” HttpHeader์™€ HttpBody๋ฅผ ํฌํ•จํ•˜๋Š” ํด๋ž˜์Šค

 

ResponseEntity ํด๋ž˜์Šค

HttpEntity ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” 

RequestEntity, ResponseEntity 

๋”ฐ๋ผ์„œ ResponseEntity ๋Š” HttpStatus, HttpHeaders, HttpBody๋ฅผ ํฌํ•จ!

 

์ƒํƒœ์ฝ”๋“œ(Status), ํ—ค๋”(headers), ์‘๋‹ต๋ฐ์ดํ„ฐ(ResponseData) ๋ฅผ ๋‹ด๋Š” ์ƒ์„ฑ์ž๋„ ์กด์žฌ

 

์ด๋Ÿฐ์‹์œผ๋กœ ๋‚ด์šฉ์„ ์‘๋‹ต ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ฐธ์กฐ : https://devlog-wjdrbs96.tistory.com/182

 

[Spring Boot] ResponseEntity๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋จผ์ € REST API๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š” ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋จผ์ € ์ž˜ ์ฝ์–ด๋ณด์ž. https://meetup.toast.com/posts/92 REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ : TOAST Meetup REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ meetup.toast.com 1. ResponseEn..

devlog-wjdrbs96.tistory.com

์ฐธ์กฐ : https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

 

[๋„คํŠธ์›Œํฌ] REST API๋ž€? REST, RESTful์ด๋ž€?

REST API๋ž€ REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ API๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. REST API๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด REST๋ถ€ํ„ฐ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. REST๋ž€? REST(Representational State Transfer)์˜ ์•ฝ์ž๋กœ ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›..

khj93.tistory.com

 

๋ฐ˜์‘ํ˜•