REST(Representational State Transfer)๋ ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๊ธฐ ์ํ ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. ์ปดํจํฐ ๊ณผํ์์ธ Roy Fielding์ด 2000๋ ๋ฐ์ฌ ํ์ ๋ ผ๋ฌธ์์ ์๊ฐํ ์ดํ ๋๋ฆฌ ์ฑํ๋์ด ๋จ์์ฑ, ์ ๋ขฐ์ฑ ๋ฐ ํ์ฅ์ฑ์ผ๋ก ์ธ์ ๋ฐ๊ณ ์์ต๋๋ค. REST ์์น์ ํนํ ์ํธ ์ด์ฉ์ฑ, ๋ชจ๋์ฑ ๋ฐ ์ํ ๋น์ ์ฅ ์์น์ ์ค์ํ๋ ์น ์๋น์ค ๋ฐ API ๊ฐ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ณธ์ง์ ์ผ๋ก REST๋ World Wide Web์ ๊ธฐ๋ณธ ์์น์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ HTTP ํ๋กํ ์ฝ๊ณผ ํ์ค ์น ๊ธฐ์ ์ ํ์ฉํ์ฌ ์์คํ ์ค๊ณ์ ๋ํ ์กฐํ๋กญ๊ณ ์ด์ฒด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ด ์ํคํ ์ฒ ํจํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฐํธ์๋ ๋ฐ ๋ฐฑ์๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ถ๋ฆฌํ๊ณ GET, POST, PUT, DELETE ๋ฑ๊ณผ ๊ฐ์ HTTP ๋ฉ์๋๋ฅผ ํตํด ์ด๋ค ๊ฐ์ ์ํํ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ ๋ชจ๋์ฑ์ ์ด์งํ๊ณ ๊ฐ๋ ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
RESTful ๋์์ธ์ ์ค์ํ ๊ฐ๋ ์ค ํ๋๋ ๋ฆฌ์์ค ๊ฐ๋ ์ ๋๋ค. ๋ฆฌ์์ค๋ ๊ฐ์ฒด, ๋ฌธ์ ๋๋ ์ปฌ๋ ์ ๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ํฐํฐ๋ฅผ ๋ํ๋ด๋ฉฐ URI(Uniform Resource Identifier)๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณ๋ฉ๋๋ค. ๊ฐ ๋ฆฌ์์ค๋ ๊ณ ์ ํ URL์ ํตํด ์ก์ธ์คํ๊ณ ์กฐ์ํ ์ ์์ผ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ๋ด๋ถ ๊ตฌ์กฐ๋ ๊ตฌํ์ ๋ํ ์์ธํ ์ง์ ์์ด๋ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ๊ฒ์ํ๊ณ ์ํธ ์์ฉํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ํ์ค HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๋ฆฌ์์ค์ ๋ํ CRUD(๋ง๋ค๊ธฐ, ์ฝ๊ธฐ, ์ ๋ฐ์ดํธ, ์ญ์ ) ์์ ์ ์ํํ์ฌ ์ํธ ์์ฉ ๋ชจ๋ธ์ ๋์ฑ ๋จ์ํํ ์ ์์ต๋๋ค.
RESTful API๋ฅผ ์ค๊ณํ ๋ ๋ฆฌ์์ค ๋ฐ URI์ ๋ํ ๋ช ํํ๊ณ ์ผ๊ด๋ ๋ช ๋ช ๊ท์น์ ๋ ผ๋ฆฌ์ ๊ณ์ธต ๋ฐ ์กฐ์ง์ ์ ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด ๊ดํ์ API์ ๊ฐ๋ ์ฑ๊ณผ ์ดํด์ฑ์ ํฅ์์ํค๊ณ ํด๋ผ์ด์ธํธ์ ๊ฐ๋ฐ์ ๋ชจ๋์๊ฒ ์ ์ฌ์ ์ธ ํผ๋๊ณผ ๋ณต์ก์ฑ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ํ REST์ ์ํ ๋น์ ์ฅ ์์น์ ์ค์ํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก์ ๊ฐ ์์ฒญ์๋ ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ํ ์ธ์ ์ด๋ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ ํ์๊ฐ ์๋๋ก ํ์ฌ ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ ํฅ์์ํต๋๋ค.
RESTful ์ํคํ ์ฒ์ ํ์ ๊ธฐ๋ฅ์ ํ์ค ๋ฏธ๋์ด ์ ํ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค์ ํด๋น ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ ๋๋ค. JSON(JavaScript Object Notation) ๋ฐ XML(eXtensible Markup Language)์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ๊ณ ์ ์กํ๋ ๋ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฏธ๋์ด ์ ํ์ ๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ ํํ์ ํ์คํ๋ ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ ๋ฐ ํตํฉ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๋จ์ํํ๊ณ ๊ฐ๋ฐ์๊ฐ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ฒ๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋งฅ๋ฝ์์ RESTful ๋์์ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ํ๋ฐํธ์๋ ๋ฐ ๋ฐฑ์๋ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ํํ ํต์ ๋ฐ ์ํธ ์ด์ฉ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ ธ์ฝ๋ ๋๊ตฌ์ธ AppMaster ์ ๊ฐ์ ํ๋ซํผ์ RESTful API ๋ฐ ์๋น์ค์ ์ ์ํ ๊ฐ๋ฐ์ ์ด์งํฉ๋๋ค. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ฅผ ์๊ฐ์ ์ผ๋ก ์ค๊ณํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ REST ์์น์ ์ค์ํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
Go(golang)๋ก ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ AppMaster ์ ์ ๊ทผ ๋ฐฉ์์ Vue3 ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ Kotlin, Jetpack Compose ๋ฐ SwiftUI ์ฌ์ฉํ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ๊ณ ๊ฐ์ด ์ํฐํ๋ผ์ด์ฆ ๋ฐ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ๋ฆฌํ ์ ์๋ ์ ๊ตํ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. -์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ก๋ํฉ๋๋ค. ๋ํ ์๋ฒ endpoints ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ์ ๋ํ AppMaster ์ ์๋ ์์ฑ Swagger(OpenAPI) ๋ฌธ์๋ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ๋ฉฐ ์ต์ API ๋ฌธ์๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ๊ฒฝํ์ ๋์ฑ ํฅ์์ํต๋๋ค.
REST(Representational State Transfer)๋ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๊ณ ๊ตฌ์ถํ๋ ๋ฐฉ์์ ํ์ ์ ์ผ๋ก ๋ณํ์ํจ ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. ๋ฆฌ์์ค, ์ํ ๋น์ ์ฅ ๋ฐ ํ์ค ๋ฏธ๋์ด ์ ํ์ ์ฌ์ฉ ์์น์ ์ค์ํจ์ผ๋ก์จ REST๋ ์ ์ง ๊ด๋ฆฌ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ ๋ชจ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์ ์ด์งํฉ๋๋ค. AppMaster ์ ๊ฐ์ ํ๋ซํผ์ RESTful ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ ๋ฐ ๊ธฐ๋ฅ์ ์ง์คํ ์ ์๋๋ก ํ๊ณ ํ๋ซํผ์ ๊ตฌํ ๋ฐ ๋ฐฐํฌ์ ๋ณต์ก์ฑ์ ์ฒ๋ฆฌํฉ๋๋ค.