1 ๋ถ„ ์†Œ์š”

REST API๋ž€?

REST API๋ž€ ๋‹จ์–ด ๊ทธ๋Œ€๋กœ REST๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” API๋ฅผ ๋œปํ•œ๋‹ค.
์ฆ‰, REST API๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” REST๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ถ€ํ„ฐ ์•Œ์•„์•ผํ•œ๋‹ค.

REST?

REST๋ž€ ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ทœ์น™์„ ๋œปํ•œ๋‹ค.

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

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

REST๋Š” ๋‹ค์Œ 3๊ฐ€์ง€์˜ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.

  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 ํ”„๋กœํ† ์ฝœ์˜ ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ REST API ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถœํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
HTTP ํ”„๋กœํ† ์ฝœ์˜ ํ‘œ์ค€์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ถ”๊ฐ€์ ์ธ ์žฅ์ ์„ ํ•จ๊ป˜ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.
HTTP ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅด๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
Hypermedia API์˜ ๊ธฐ๋ณธ์„ ์ถฉ์‹คํžˆ ์ง€ํ‚ค๋ฉด์„œ ๋ฒ”์šฉ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
REST API ๋ฉ”์‹œ์ง€๊ฐ€ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„œ๋น„์Šค ๋””์ž์ธ์—์„œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค.
์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค.

REST์˜ ๋‹จ์ 

ํ‘œ์ค€์ด ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
HTTP Method ํ˜•ํƒœ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.
๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธํ•  ์ผ์ด ๋งŽ์€ ์„œ๋น„์Šค๋ผ๋ฉด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” URL๋ณด๋‹ค Header ์ •๋ณด์˜ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ „๋ฌธ์„ฑ์ด ์š”๊ตฌ๋œ๋‹ค.
๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์•„ ์ง€์›ํ•ด์ฃผ์ง€ ๋ชปํ•˜๋Š” ๋™์ž‘์ด ๋งŽ๋‹ค.(์ต์Šคํด๋กœ์–ด)

REST API ๊ทœ์น™

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

์ฐธ๊ณ ๋กœ RESTful API์™€ REST API๋Š” ์™„์ „ํžˆ ๊ฐ™์€ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค! REST๋ผ๊ณ  ๋ชจ๋‘ RESTful์€ ์•„๋‹˜!

์ฐธ๊ณ ์ž๋ฃŒ

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

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ