2023๋…„ 8์›” 28์ผยท4๋ถ„ ์ฝ๊ธฐ

REST API ์ž‘๋™ ๋ฐฉ์‹

REST API๊ฐ€ ๊ธฐ์—…์˜ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšจ๊ณผ์ ์œผ๋กœ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”.

REST API ์ž‘๋™ ๋ฐฉ์‹

RESTful API๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

RESTful API(Representational State Transfer Application ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค)๋Š” ์›น ์„œ๋น„์Šค ๊ตฌ์ถ• ๋ฐ ๊ด€๋ฆฌ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์— ๋งž์ถฐ์ง„ ์ผ๋ จ์˜ ์ง€์นจ ์›์น™์ธ REST์˜ ์•„ํ‚คํ…์ฒ˜ ์ œ์•ฝ์„ ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋ฒ„์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. RESTful API๋Š” GET, POST, PUT ๋ฐ DELETE์™€ ๊ฐ™์€ ํ‘œ์ค€ HTTP(Hypertext Transfer Protocol) ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์›น ๋ธŒ๋ผ์šฐ์ €, ๋ชจ๋ฐ”์ผ ์•ฑ ๋ฐ ์„œ๋ฒ„์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ํ†ต์‹ ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

RESTful API์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ†ตํ•ฉ ๋ฐ ์ž‘์—…์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. RESTful API๋ฅผ ํ†ตํ•ด ๊ตํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ JSON(JavaScript Object Notation) ๋˜๋Š” XML(eXtensible Markup Language)๊ณผ ๊ฐ™์ด ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์ด๋ฏ€๋กœ ์ตœ์‹  ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

RESTful API์˜ ์ž‘๋™ ๋ฐฉ์‹

RESTful API๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ HTTP ์š”์ฒญ์€ ๋ฉ”์„œ๋“œ, URI(Uniform Resource Identifier), ํ—ค๋” ๋ฐ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋ฉ”์„œ๋“œ์™€ URI๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒํƒœ ์ฝ”๋“œ, ํ—ค๋” ๋ฐ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์ด ํฌํ•จ๋œ HTTP ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ RESTful API์— ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” HTTP ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.

  1. GET : ์„œ๋ฒ„์—์„œ URI๋กœ ์‹๋ณ„๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  2. POST : ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์— ์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. PUT : ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์— ์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ๋กœ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  4. DELETE : ์„œ๋ฒ„์—์„œ URI๋กœ ์‹๋ณ„๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ž์ƒ๊ฑฐ๋ž˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ RESTful API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ, ๊ณ ๊ฐ ๋ฐ ์ฃผ๋ฌธ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์„œ๋ฒ„์— GET ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ์ œํ’ˆ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(์˜ˆ: GET /products/{id} ). ์ œํ’ˆ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” URI์— ์ œํ’ˆ ID(์˜ˆ: DELETE /products/{id} )๋ฅผ ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„์— DELETE ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์š”์ฒญ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์„ ํƒ์  ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ(์ผ๋ฐ˜์ ์œผ๋กœ JSON ํ˜•์‹)๊ณผ ํ•จ๊ป˜ ์ ์ ˆํ•œ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

RESTful API ๋””์ž์ธ์˜ ์›์น™

RESTful API์˜ ์ด์ ์„ ์–ป์œผ๋ ค๋ฉด REST ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์ฃผ์š” ์›์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์›์น™์€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ API ์„ค๊ณ„๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  1. ์ƒํƒœ ๋น„์ €์žฅ ์„œ๋ฒ„ ์ƒํ˜ธ ์ž‘์šฉ : ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ์˜ ๊ฐ ์š”์ฒญ์—๋Š” ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ ๊ฐ„ ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ, ๊ฐ ์š”์ฒญ์„ ๋…๋ฆฝ์ ์ด๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ถ„๋ฆฌ : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ๋ณ„๋„์˜ ๊ด€์‹ฌ๊ณผ ์ฑ…์ž„์„ ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋‹ด๋‹นํ•˜๊ณ , ์„œ๋ฒ„๋Š” ๋ฆฌ์†Œ์Šค ์ฒ˜๋ฆฌ, ์ €์žฅ, ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  3. ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ : ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ ์ธก์— ์บ์‹œํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•˜๊ณ  ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์‘๋‹ต์„ ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ธฐ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์บ์‹œ ์ œ์–ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ : RESTful API๋Š” ๊ฐ ๊ณ„์ธต์— ํŠน์ • ์ฑ…์ž„์ด ์žˆ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ ๋ถ„๋ฆฌ, ์œ ์ง€ ๊ด€๋ฆฌ ์šฉ์ด์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  5. ๊ณ ์œ ํ•œ ๋ฆฌ์†Œ์Šค ์‹๋ณ„ : API์˜ ๊ฐ ๋ฆฌ์†Œ์Šค๋Š” ๊ณ ์œ ํ•œ URI(Uniform Resource Identifier)๋กœ ์‹๋ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค์— ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ์ผ๊ด€๋œ HTTP ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ : RESTful API๋Š” ํ‘œ์ค€ HTTP ๋ฉ”์„œ๋“œ(GET, POST, PUT, DELETE)๋ฅผ ์ผ๊ด€๋˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ๊ด€์„ฑ์€ API์˜ ์œ ์šฉ์„ฑ๊ณผ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์›์น™์„ ์ค€์ˆ˜ํ•จ์œผ๋กœ์จ RESTful API ๊ฐœ๋ฐœ์ž๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ†ต์‹ ์„ ์œ„ํ•œ ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST API ์•„ํ‚คํ…์ฒ˜

REST API ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹จ์ˆœ์„ฑ๊ณผ ์›น ํ‘œ์ค€ ์ค€์ˆ˜๋ฅผ ๊ฐ•์กฐํ•˜๋Š” REST(Representational State Transfer) ๋ชจ๋ธ ์›์น™์„ ์ค‘์‹ฌ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. RESTful ์•„ํ‚คํ…์ฒ˜์—์„œ ์›น ์„œ๋น„์Šค๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ผ๋ จ์˜ endpoints ๋…ธ์ถœํ•˜๋ฉฐ, ๊ฐ ์—”๋“œํฌ์ธํŠธ๋Š” ๊ฐœ๋ณ„ ๋ฆฌ์†Œ์Šค ๋˜๋Š” ๋ฆฌ์†Œ์Šค ๋ชจ์Œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. REST์˜ ํ•ต์‹ฌ ์›์น™์„ ๋”ฐ๋ฅด๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ ํ†ตํ•ฉ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ API๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. REST API ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ : ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต๊ณผ ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์„ ๋‹ด๋‹นํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋ฒ„์ธก ๋ถ€๋ถ„์—๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ API endpoints ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. API ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ํ‘œ์ค€ํ™”๋œ ํ˜•์‹์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ๋น„์ €์žฅ ํ”„๋กœํ† ์ฝœ(์ผ๋ฐ˜์ ์œผ๋กœ HTTP)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ๊ฐ ์š”์ฒญ์—๋Š” ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ฒ„๋Š” ์š”์ฒญ ๊ฐ„์— ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

REST API ์•„ํ‚คํ…์ฒ˜์—๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฆฌ์†Œ์Šค: RESTful API์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ธ ๋ฆฌ์†Œ์Šค๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ๋‚ด์˜ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” URI(Uniform Resource Identifier)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค.
  • HTTP ๋ฉ”์„œ๋“œ: ํด๋ผ์ด์–ธํŠธ๋Š” GET, POST, PUT ๋ฐ DELETE์™€ ๊ฐ™์€ ํ‘œ์ค€ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” CRUD(์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ) ๋ฐฉ๋ฒ•์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฏธ๋””์–ด ์œ ํ˜•: REST API๋Š” JSON, XML ๋˜๋Š” ์ผ๋ฐ˜ ํ…์ŠคํŠธ์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋ฏธ๋””์–ด ์œ ํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. JSON์€ ๋‹จ์ˆœ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์„ ํƒ๋œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•์‹์ž…๋‹ˆ๋‹ค.
  • ์ƒํƒœ ๋น„์ €์žฅ ํ†ต์‹ : REST API ์•„ํ‚คํ…์ฒ˜์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ๊ฐ ์š”์ฒญ์—๋Š” ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์„œ๋ฒ„๋Š” ์š”์ฒญ ์‚ฌ์ด์— ํด๋ผ์ด์–ธํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌด์ƒํƒœ๋Š” API์˜ ํ™•์žฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜ ๋Œ€์‹  REST API๋ฅผ ์„ ํƒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

API์šฉ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ ์ „ Data Designer๋กœ PostgreSQL ํ…Œ์ด๋ธ”์„ ๋ชจ๋ธ๋งํ•˜์„ธ์š”.
AppMaster ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

REST API๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์„ ํƒ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SOAP(Simple Object Access Protocol) ๋˜๋Š” XML-RPC์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๋น„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ˆœ์„ฑ: REST API๋Š” ํ‘œ์ค€ HTTP ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค ํ‘œํ˜„ ํ˜•์‹์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ํ”„๋กœํ† ์ฝœ๊ณผ ๋ณต์žกํ•œ XML ๋ฉ”์‹œ์ง•์— ์˜์กดํ•˜๋Š” SOAP ๋˜๋Š” XML-RPC๋ณด๋‹ค ๊ตฌํ˜„, ์ดํ•ด ๋ฐ ์‚ฌ์šฉ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ: RESTful API๋Š” ์ƒํƒœ ๋น„์ €์žฅ์ด๋ฏ€๋กœ ์ˆ˜ํ‰์ ์œผ๋กœ ๋” ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ˆ˜์™€ ๋ฐ์ดํ„ฐ ์–‘์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ถ”๊ฐ€ ์„œ๋ฒ„๋ฅผ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ: ์ƒํƒœ ๋น„์ €์žฅ ํŠน์„ฑ๊ณผ ์บ์‹ฑ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด RESTful API๋Š” ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋” ์ข‹์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ์ €์žฅํ•˜์—ฌ ๋ฐ˜๋ณต ์š”์ฒญ์˜ ํ•„์š”์„ฑ์„ ์ค„์ด๊ณ  ์ฒ˜๋ฆฌ๋Ÿ‰์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ: REST API ๋””์ž์ธ์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ํ•„์š”์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ˜•์‹์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ๊ธฐ์ˆ  ๊ฐ„์˜ ํ†ตํ•ฉ์ด ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์›น ํ‘œ์ค€ ์ค€์ˆ˜: REST์˜ ์›์น™์€ ์›น์˜ ์•„ํ‚คํ…์ฒ˜ ์›์น™๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์›์น™์„ ์ค€์ˆ˜ํ•จ์œผ๋กœ์จ REST API๋Š” ์บ์‹ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜, CDN(์ฝ˜ํ…์ธ  ๋ฐฐํฌ ๋„คํŠธ์›Œํฌ) ๋ฐ SSL/TLS์™€ ๊ฐ™์€ ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ์›น์˜ ๊ธฐ์กด ์ธํ”„๋ผ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST API ๋””์ž์ธ์˜ ์ผ๋ฐ˜์ ์ธ ๊ณผ์ œ

๋ฉ”์‹œ์ง•์„ API์— ์—ฐ๊ฒฐ
API ์›Œํฌํ”Œ๋กœ์—์„œ Telegram, ์ด๋ฉ”์ผ ๋˜๋Š” SMS ์•Œ๋ฆผ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์„ธ์š”.
์ง€๊ธˆ ์ฒดํ—˜

RESTful API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งŽ์€ ์ด์ ์ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋Š” ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์—ฌ์ „ํžˆ ์–ด๋ ค์›€์— ์ง๋ฉดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๊ณผ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฒ„์ „ ๊ด€๋ฆฌ: API๊ฐ€ ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ด€๋ฆฌ๋Š” API์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋Š” URI ๋ฒ„์ „ ๊ด€๋ฆฌ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์š”์ฒญ ํ—ค๋” ์‚ฌ์šฉ๊ณผ ๊ฐ™์ด API ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ: REST API๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ์ ์ ˆํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ธ์ฆ, OAuth ๋˜๋Š” JWT(JSON ์›น ํ† ํฐ)์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ‘œ์ค€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ API ๋ณด์•ˆ์„ ์œ„ํ•ด์„œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๊ณ  ์ ์ ˆํ•œ ๊ตฌํ˜„์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์œจ ์ œํ•œ ๋ฐ ํ• ๋‹น๋Ÿ‰: ๋น„์œจ ์ œํ•œ ๋ฐ ํ• ๋‹น๋Ÿ‰์„ ์ ์šฉํ•˜๋ฉด API์˜ ๊ณผ๋„ํ•œ ์‚ฌ์šฉ์ด๋‚˜ ๋‚จ์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ๊ณต์ •ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์ ๋ฒ•ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ๊ณผ ์—„๊ฒฉํ•จ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋„๋ก ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜ธํ™˜์„ฑ: ๊ธฐ์ˆ , ํ”Œ๋žซํผ ๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” REST API๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฆฌ ์ธ์ •๋˜๋Š” ํ‘œ์ค€๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๋ฉด ํ˜ธํ™˜์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋ฌธ์„œํ™”: ์„ฑ๊ณต์ ์ธ REST API๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํฌ๊ด„์ ์ธ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ํ˜ผ๋ž€์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฌธ์ œ ๋””๋ฒ„๊น… ๋ฐ ํ•ด๊ฒฐ์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณผ์ œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  RESTful API ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„ํƒํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐœ๋ฐœ ๋ฐ ํ†ตํ•ฉ์„ ๊ฐ„์†Œํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ณ ์„ฑ๋Šฅ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

REST API ์„ค๊ณ„ ๋ชจ๋ฒ” ์‚ฌ๋ก€

RESTful API๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์Œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ์ฒด๊ณ„์ ์ด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด API๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

REST ์›์น™ ๋”ฐ๋ฅด๊ธฐ

API ๋””์ž์ธ์ด REST ์•„ํ‚คํ…์ฒ˜์˜ ์›์น™์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ƒํƒœ ๋น„์ €์žฅ ์„œ๋ฒ„ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ ์ง€ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ถ„๋ฆฌ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ API ์‘๋‹ต์˜ ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ณ„์ธตํ™”๋œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ ์ ˆํ•œ HTTP ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ

๋‹ค์–‘ํ•œ CRUD(์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ) ์ž‘์—…์— ๋Œ€ํ•ด GET, POST, PUT ๋ฐ DELETE์™€ ๊ฐ™์€ ํ‘œ์ค€ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ์ˆ˜ํ•˜์„ธ์š”. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด API๊ฐ€ ๋”์šฑ ์ง๊ด€์ ์ด ๋˜๊ณ  GET ์š”์ฒญ ์บ์‹ฑ๊ณผ ๊ฐ™์€ HTTP์˜ ๋‚ด์žฅ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 GET /resources -> ๋ฆฌ์†Œ์Šค ๋ชฉ๋ก ๊ฒ€์ƒ‰
POST /resources -> ์ƒˆ ๋ฆฌ์†Œ์Šค ๋งŒ๋“ค๊ธฐ
PUT /resources/:id -> ์ง€์ •๋œ ID๋กœ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
DELETE /resources/:id -> ์ง€์ •๋œ ID๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ HTTP ์ƒํƒœ ์ฝ”๋“œ ์‚ฌ์šฉ

ํ‘œ์ค€ HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์˜๋ฏธ ์žˆ๊ณ  ์ผ๊ด€๋œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ฑ๊ณต์ ์ธ ์š”์ฒญ์—๋Š” 200 ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ์ธก ์˜ค๋ฅ˜์—๋Š” 400์„, ์„œ๋ฒ„ ์ธก ๋ฌธ์ œ์—๋Š” 500์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 200 OK -> ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
201 ์ƒ์„ฑ๋จ -> ๋ฆฌ์†Œ์Šค๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
204 ์ฝ˜ํ…์ธ  ์—†์Œ -> ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์ง€๋งŒ ๋ฐ˜ํ™˜ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. (DELETE ์š”์ฒญ์— ์‚ฌ์šฉ๋จ)
400 ์ž˜๋ชป๋œ ์š”์ฒญ -> ์š”์ฒญ์˜ ํ˜•์‹์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
401 ๊ถŒํ•œ ์—†์Œ -> ํด๋ผ์ด์–ธํŠธ์— ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์ด ์—†์Šต๋‹ˆ๋‹ค.
404 ์ฐพ์„ ์ˆ˜ ์—†์Œ -> ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
500 ๋‚ด๋ถ€ ์„œ๋ฒ„ ์˜ค๋ฅ˜ -> ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘ ์„œ๋ฒ„ ์ธก ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ๊ด€๋ฆฌ ๊ตฌํ˜„

๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด API ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ „๋‹ฌํ•˜์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—…๋ฐ์ดํŠธ๋‚˜ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. URL(์˜ˆ: /api/v1/resources) ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ—ค๋”(์˜ˆ: X-API-Version: 1)๋กœ API ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ๋งค๊น€ ๋ฐ ํ•„ํ„ฐ๋ง ํ™œ์šฉ

๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” API์˜ ๊ฒฝ์šฐ ํŽ˜์ด์ง€ ๋งค๊น€ ๋ฐ ํ•„ํ„ฐ๋ง์„ ๊ตฌํ˜„ํ•˜์—ฌ ๊ฐ ์‘๋‹ต์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์ œํ•œํ•˜์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ๋Œ€์—ญํญ ์‚ฌ์šฉ๋Ÿ‰์ด ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค.

 GET /resources?page=2&per_page=50 -> ํŽ˜์ด์ง€๋‹น ํ•ญ๋ชฉ์ด 50๊ฐœ๋กœ ์ œํ•œ๋˜์–ด ๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
GET /resources?filter[status]=active -> "active" ์ƒํƒœ์˜ ๋ฆฌ์†Œ์Šค ๊ฒ€์ƒ‰

API ๋ณด์•ˆ

๋ฌด๋‹จ ์•ก์„ธ์Šค ๋ฐ ๋ฐ์ดํ„ฐ ์œ„๋ฐ˜์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ ์ ˆํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ API๋ฅผ ๋ณดํ˜ธํ•˜์„ธ์š”. ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ OAuth2, API ํ‚ค, JWT(JSON ์›น ํ† ํฐ) ๋˜๋Š” ๊ธฐํƒ€ ์‚ฌ์šฉ์ž ์ •์˜ ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™์€ ํ‘œ์ค€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๋ช…ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•œ ๋ฌธ์„œ ์ œ๊ณต

endpoints, HTTP ๋ฉ”์„œ๋“œ, ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜, ์‘๋‹ต ํ˜•์‹, ์˜ค๋ฅ˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ API์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”. ์ข‹์€ ๋ฌธ์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ API๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ํ†ตํ•ฉํ•˜์—ฌ ์ง€์› ์š”์ฒญ์„ ์ค„์ด๊ณ  ์ฑ„ํƒ์„ ์ด‰์ง„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

AppMaster.io: REST API๋ฅผ ํ†ตํ•œ ํ†ตํ•ฉ ๋ฌธ์ œ ํ•ด๊ฒฐ

Go ๋ฐฑ์—”๋“œ๋กœ ํ™•์žฅ
๋Œ€๊ทœ๋ชจ ๋ถ€ํ•˜์— ์ ํ•ฉํ•œ ๋ฌด์ƒํƒœ(stateless) Go ๋ฐฑ์—”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
๋ฐฑ์—”๋“œ ์ƒ์„ฑ

RESTful API๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์ง€๋งŒ AppMaster.io ์ฝ”๋“œ ์—†๋Š” ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ†ตํ•ฉ ๋ฌธ์ œ์™€ ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AppMaster.io ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ REST API endpoints ์„ค๊ณ„ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ no-code ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด REST API๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ƒ์„ฑ, ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์†ํ™”๋˜์–ด ๋”์šฑ ํšจ์œจ์ ์ด๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ AppMaster.io๋Š” ์„œ๋ฒ„ endpoints ์— ๋Œ€ํ•œ Swagger(OpenAPI) ๋ฌธ์„œ ์ƒ์„ฑ์„ ์ง€์›ํ•˜์—ฌ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๋ฐ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ์„ ๋”์šฑ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

REST API ๊ฐœ๋ฐœ์— AppMaster.io๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋” ๋น ๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ - 30์ดˆ ์ด๋‚ด์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ
  • ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํšจ์œจ์ ์ธ ์ง€์› - ํ”Œ๋žซํผ ์ „๋ฐ˜์— ๊ฑธ์ณ ์ผ๊ด€๋˜๊ณ  ๋‹จ์ˆœํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์ˆ ์  ๋ถ€์ฑ„ ์ œ๊ฑฐ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ƒ์„ฑ๋˜์–ด ๊นจ๋—ํ•œ ์ฝ”๋“œ๊ฐ€ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ - AppMaster.io๋Š” Go๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ๋น„์ €์žฅ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ์—… ๋ฐ ๊ณ ๋ถ€ํ•˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๊ฒŒ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.

AppMaster.io๋Š” ์ค‘์†Œ๊ธฐ์—…์ด๋“  ๋Œ€๊ธฐ์—…์ด๋“  REST API ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ด„์ ์ด๊ณ  ํšจ์œจ์ ์ธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

RESTful API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

RESTful API(Representational State Transfer Application ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค)๋Š” REST ์•„ํ‚คํ…์ฒ˜์˜ ์•„ํ‚คํ…์ฒ˜ ์›์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋””์ž์ธ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” GET, POST, PUT ๋ฐ DELETE์™€ ๊ฐ™์€ ํ‘œ์ค€ HTTP ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API ์„ค๊ณ„์˜ ํ•ต์‹ฌ ์›์น™์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

RESTful API ๋””์ž์ธ์˜ ์ฃผ์š” ์›์น™์—๋Š” ์ƒํƒœ ๋น„์ €์žฅ ์„œ๋ฒ„ ์ƒํ˜ธ ์ž‘์šฉ, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ถ„๋ฆฌ, ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ, ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜, ๊ณ ์œ ํ•œ ๋ฆฌ์†Œ์Šค ์‹๋ณ„ ๋ฐ ์ผ๊ด€๋œ HTTP ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

RESTful API์— ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” HTTP ๋ฉ”์†Œ๋“œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

RESTful API์— ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” HTTP ๋ฉ”์†Œ๋“œ๋Š” GET(๋ฆฌ์†Œ์Šค ๊ฒ€์ƒ‰์šฉ), POST(์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ์šฉ), PUT(๊ธฐ์กด ๋ฆฌ์†Œ์Šค ์—…๋ฐ์ดํŠธ์šฉ) ๋ฐ DELETE(๋ฆฌ์†Œ์Šค ์‚ญ์ œ์šฉ)์ž…๋‹ˆ๋‹ค.

RESTful API๋Š” SOAP์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๊นŒ?

RESTful API๋Š” ์›น ์„œ๋น„์Šค์˜ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ธ ๋ฐ˜๋ฉด SOAP(Simple Object Access Protocol)๋Š” ๋ฉ”์‹œ์ง• ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. RESTful API๋Š” ํ‘œ์ค€ HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  JSON๊ณผ ๊ฐ™์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, SOAP๋Š” XML ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ž์ฒด ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์†Œ๋“œ ๋ฐ ํ˜•์‹์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

RESTful API๊ฐ€ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ณด๋‹ค ์„ ํ˜ธ๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

RESTful API๋Š” ๋‹จ์ˆœ์„ฑ, ์œ ์—ฐ์„ฑ, ํ™•์žฅ์„ฑ ๋ฐ ์„ฑ๋Šฅ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ณด๋‹ค ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์›ํ•˜๊ณ  ๊ตฌํ˜„ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์šฐ๋ฉฐ ์ตœ์‹  ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

REST API ์„ค๊ณ„์™€ ๊ด€๋ จ๋œ ์ผ๋ฐ˜์ ์ธ ๊ณผ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

REST API ์„ค๊ณ„์˜ ์ผ๋ฐ˜์ ์ธ ๊ณผ์ œ์—๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ, ๋ณด์•ˆ ๋ณด์žฅ, ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ์ฒ˜๋ฆฌ, ์†๋„ ์ œํ•œ ๋ฐ ํ• ๋‹น๋Ÿ‰ ๊ด€๋ฆฌ, ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ฐ ํ”Œ๋žซํผ๊ณผ์˜ ํ˜ธํ™˜์„ฑ ์œ ์ง€ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

REST API ์„ค๊ณ„์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

REST API ์„ค๊ณ„์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์—๋Š” REST ์›์น™ ์ค€์ˆ˜, ์ ์ ˆํ•œ HTTP ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ, ํ‘œ์ค€ ์ƒํƒœ ์ฝ”๋“œ ์‚ฌ์šฉ, ๋ฒ„์ „ ๊ด€๋ฆฌ ํ™œ์šฉ, ํŽ˜์ด์ง€ ๋งค๊น€ ๋ฐ ์ •๋ ฌ ๊ตฌํ˜„, ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ํ†ตํ•œ API ๋ณด์•ˆ, ๋ช…ํ™•ํ•˜๊ณ  ์ž์„ธํ•œ ๋ฌธ์„œ ์ œ๊ณต ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

AppMaster.io๊ฐ€ REST API ํ†ตํ•ฉ์— ์–ด๋–ป๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‚˜์š”?

AppMaster.io๋Š” ์‚ฌ์šฉ์ž๊ฐ€ REST API endpoints ์„ค๊ณ„๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” no-code ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. AppMaster.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ REST API๋ฅผ ์ƒ์„ฑ, ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
REST API ์ž‘๋™ ๋ฐฉ์‹ | AppMaster