Skip to main content

44์žฅ REST API

REST: Representational State Transfer

์›น์ด HTTP๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์„ ๋ณด๊ณ  HTTP์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ์„œ REST๋ฅผ ๋กœ์ด ํ•„๋”ฉ์ด ์†Œ๊ฐœํ–ˆ๊ณ , ์ด๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์˜๋„์— ๋งž๊ฒŒ ๋””์ž์ธํ•˜๋„๋ก ์œ ๋„ํ•˜๊ณ  ์žˆ๋””.

REST์˜ ๊ธฐ๋ณธ ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ ์„œ๋น„์Šค ๋””์ž์ธ์„ RESTful ์ด๋ผํ•œ๋‹ค.

์ฆ‰, REST๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๊ทœ์ •ํ•œ ์•„ํ‚คํ…์ฒ˜๊ณ , REST API ๋Š” REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

REST API์˜ ๊ตฌ์„ฑโ€‹

REST API ๋Š” ์ž์› (resource), ํ–‰์œ„ (verb), ํ‘œํ˜„ (representations)์˜ 3๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. REST๋Š” ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ self-descriptiveness๋กœ ๊ตฌ์„ฑ๋˜์–ด REST API๋งŒ์œผ๋กœ http์š”์ฒญ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

  • resource : ์ž์› - URI (์—”๋“œํฌ์ธํŠธ)
  • verb: ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„ - HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ
  • representations: ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„์˜ ๊ตฌ์ฒด์  ๋‚ด์šฉ - ํŽ˜์ด๋กœ๋“œ

REST API ์„ค๊ณ„ ์›์น™โ€‹

REST ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋ณธ์ ์ธ ์›์น™์„ ์•Œ์•„๋ณด์ž.

  1. URI๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œํ˜„ํ•ด์•ผํ•œ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ• ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์€ ๋™์‚ฌ๋ณด๋‹ค๋Š” ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉ.

GET /todos/1

  1. ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” http ์š”์ฒญ ๋ฉ”์„œ๋“œ๋กœ ํ‘œํ˜„ HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—์„ธ ์š”์ฒญ์˜ ์ข…๋ฃŒ์™€ ๋ชฉ์  (๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„)์„ ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. GET, POST, PUT, PATCH, DELETE ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CRUD๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

GETโ€‹

  • ์ข…๋ฅ˜: index / retrieve
  • ํŽ˜์ด๋กœ๋“œ: X

POSTโ€‹

  • ์ข…๋ฅ˜: create
  • ํŽ˜์ด๋กœ๋“œ: O

PUTโ€‹

  • ์ข…๋ฅ˜: replace (์ „์ฒด๊ต์ฒด)
  • ํŽ˜์ด๋กœ๋“œ: O

PATCHโ€‹

  • ์ข…๋ฅ˜: modify (์ผ๋ถ€์ˆ˜์ •)
  • ํŽ˜์ด๋กœ๋“œ: O

DELETEโ€‹

  • ์ข…๋ฅ˜: delete
  • ํŽ˜์ด๋กœ๋“œ: X

๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” URI์— ํ‘œํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

JSON Server๋ฅผ ์ด์šฉํ•œ REST API ์‹ค์Šตโ€‹

JSON Server๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ€์ƒ REST API ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ HTTP ์š”์ฒญ์„ ์ „์†ก, ์‘๋‹ต ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.