REST(Representational State Transfer)๋Š” ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ๋А์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” Roy Fielding์ด 2000๋…„ ๋ฐ•์‚ฌ ํ•™์œ„ ๋…ผ๋ฌธ์—์„œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ์ˆ˜๋‹จ์œผ๋กœ ์ฒ˜์Œ ์†Œ๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ REST๋Š” ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํŠนํžˆ ์›น ์„œ๋น„์Šค ๋ฐ API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ฃผ์š” ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ REST๋Š” ์ƒํƒœ ๋น„์ €์žฅ ํ†ต์‹ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์„ ์ด‰์ง„ํ•˜๋Š” ์ผ๋ จ์˜ ์ œ์•ฝ ์กฐ๊ฑด์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์•ฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜: ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€๋ จ๋˜๊ณ  ์„œ๋ฒ„๋Š” ์ฒ˜๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒํƒœ ๋น„์ €์žฅ ํ†ต์‹ : ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ์˜ ๊ฐ ์š”์ฒญ์—๋Š” ์š”์ฒญ์„ ์ดํ•ดํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ ๊ฐ„ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ™•์žฅ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ์„œ๋ฒ„ ๊ตฌํ˜„์ด ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์บ์‹œ ๊ฐ€๋Šฅํ•œ ์‘๋‹ต: ์„œ๋ฒ„๋Š” ์‘๋‹ต์„ ์บ์‹œ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์ค‘๊ฐœ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์‘๋‹ต์„ ์ €์žฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์ค‘๊ฐ„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ(์˜ˆ: ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์บ์‹ฑ ๋“ฑ)์„ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ณต์žก์„ฑ์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ†ต์ผ๋œ ์ธํ„ฐํŽ˜์ด์Šค: RESTful ์‹œ์Šคํ…œ์€ ํŠน์ • ์ œ์•ฝ ์กฐ๊ฑด ๋ฐ ์„ค๊ณ„ ์›์น™์„ ์ค€์ˆ˜ํ•˜์—ฌ ์ผ๊ด€๋˜๊ณ  ํ†ต์ผ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • Code-On-Demand(์„ ํƒ ์‚ฌํ•ญ): ์„œ๋ฒ„๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…์ŠคํŠธ์˜ JavaScript ๋ฆฌ์†Œ์Šค์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์˜ ๋งฅ๋ฝ์—์„œ REST๋Š” ์ตœ์‹  ์›น ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฑ๋ณธ ์—ญํ• ์„ ํ•˜๋Š” ์›น API ์ƒ์„ฑ์— ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AppMasterno-code ํ”Œ๋žซํผ์œผ๋กœ ๊ตฌ์ถ•๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด RESTful API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ํฌ๊ด„์ ์ธ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE)์ธ AppMaster ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” RESTful ํ†ต์‹  ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์ง€์›๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋งŽ์€ ์ด์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  REST์—๋Š” ๋น„ํŒ๊ณผ ๋Œ€์•ˆ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž๋Š” REST๊ฐ€ ๋ฌด์ƒํƒœ์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ์ค€์ˆ˜๋กœ ์ธํ•ด ํŠนํžˆ ์‹ค์‹œ๊ฐ„ ๋˜๋Š” ๋Œ€ํ™”ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋น„ํšจ์œจ์„ฑ๊ณผ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์šฐ๋ ค์— ๋Œ€์‘ํ•˜์—ฌ GraphQL ๋ฐ gRPC์™€ ๊ฐ™์€ ๋Œ€์ฒด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋“ฑ์žฅํ–ˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์€ ๊ณ ์œ ํ•œ ์žฅ๋‹จ์ ๊ณผ ๋””์ž์ธ ์ฒ ํ•™์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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