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์ ์ฑ๋ฅ์ ํ์ฉํ์ฌ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ํ๋ ฅ์ ์ด๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฒ์ด ๊ทธ ์ด๋ ๋๋ณด๋ค ์ฌ์์ก์ต๋๋ค.