REST ์ค๊ณ ์์น
๋ฌด์ํ ์์ฉ, ์ ์ ํ ๋ฆฌ์์ค ์ด๋ฆ ์ง์ , ๋ฒ์ ๊ด๋ฆฌ ๋ฑ ๋ชจ๋ฒ ์ฌ๋ก์ ์ง์นจ์ ํ์ํ์ฌ REST API ์ค๊ณ ์์น์ ์์ธํ ์์๋ณด์ธ์.

REST(Representational State Transfer)๋ ์น ์๋น์ค ๋ฐ API ๊ตฌ์ถ์ ์ํ ์ํคํ ์ฒ ์คํ์ผ์ด ๋์์ต๋๋ค. ์ด๋ฌํ ์ธ๊ธฐ๋ ๋จ์์ฑ, ํ์ฅ์ฑ ๋ฐ ์ฌ์ฉ ์ฉ์ด์ฑ์์ ๋น๋กฏ๋ฉ๋๋ค. RESTful API๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ํ์ค HTTP ๋ฐฉ๋ฒ ๋ฐ URL ํจํด์ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ํธ ์์ฉํ ์ ์์ผ๋ฏ๋ก ๋ค์ํ ํ๋ซํผ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฝ๊ฒ ์ดํดํ๊ณ ์ฑํํ ์ ์์ต๋๋ค.
REST ๋์์ธ์ ์์น์ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ API๋ฅผ ๋ง๋๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฌํ ์์น์ ์ค์ํ๋ฉด ์ ์ง ๊ด๋ฆฌ, ํตํฉ, ์ ๊ทธ๋ ์ด๋๊ฐ ์ฌ์ด API๋ฅผ ๊ตฌ์ถํ์ฌ ๊ฐ๋ฐ์์ ์ฌ์ฉ์ ๋ชจ๋์๊ฒ ์ํํ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์์ต๋๋ค. REST์ ํต์ฌ ์์น ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฌด๊ตญ์
- ์ ์ ํ ๋ฆฌ์์ค ๋ช ๋ช ๋ฐ ๊ตฌ์กฐํ
- HTTP ๋ฉ์๋๋ฅผ ์ ์ ํ๊ฒ ์ฌ์ฉํ๊ธฐ
- ํ์คํ๋ ์ค๋ฅ ์๋ต
- ๋ฒ์ ๊ด๋ฆฌ ๊ตฌํ
- API ๋ณด์
๋ค์ ์น์ ์์๋ ์ด๋ฌํ ์์น์ ์ดํดํ๊ณ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฌด๊ตญ์ ์์ฉ
Stateless๋ REST ๋์์ธ์ ํต์ฌ ์์น์ ๋๋ค. ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก์ ๊ฐ ์์ฒญ์๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํ๋ค๊ณ ๋ช ์๋์ด ์์ต๋๋ค. ์ฆ, ์๋ฒ๋ ์์ฒญ ์ฌ์ด์ ํด๋ผ์ด์ธํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํด์๋ ์ ๋ฉ๋๋ค. ์ด๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ค์ํฉ๋๋ค.
- ํ์ฅ์ฑ: ์ํ ๋น์ ์ฅ ์ํคํ ์ฒ๋ ์๋ฒ๊ฐ ๋ค์ด์ค๋ ์์ฒญ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํ์ฌ ์ํ์ ํ์ฅ์ ๋จ์ํํฉ๋๋ค. ์๋ฒ ์ธ์คํด์ค ์ ๋ฐ์ ๊ฑธ์ณ ๋ณต์กํ ๋๊ธฐํ ๋ฐ ์ํ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ํ์ํ์ง ์์ผ๋ฏ๋ก ์์คํ ๊ฐ๋๊ฐ ํฅ์๋ฉ๋๋ค.
- ์ ๋ขฐ์ฑ: ์๋ฒ๋ ์ด์ ์์ฒญ์ ์ ๋ณด์ ์์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ์ ๋ํ ๋ณต์๋ ฅ์ด ๋ ๋ฐ์ด๋๊ณ ์๋ฒ ์ธ์คํด์ค ์ค ํ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์์ฒญ์ ๊ณ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ ์ง ๊ด๋ฆฌ์ฑ: ์ํ ๋น์ ์ฅ ์ค๊ณ๋ ํด๋ผ์ด์ธํธ๋ณ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ ์ฅํ ํ์์ฑ์ ์ ๊ฑฐํ์ฌ ์๋ฒ ๊ตฌํ์ ๋จ์ํํฉ๋๋ค. ์ด๋ ๋ํ ํด๋ผ์ด์ธํธ ์ํ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ์๋ฒ ์ธก ๋ฒ๊ทธ์ ์ํ์ ์ค์ฌ์ค๋๋ค.
REST API ์์ ์ํ ๋น์ ์ฅ์ ์ ์ฉํ๋ ค๋ฉด ์์ฒญ ์ฒ๋ฆฌ์ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์์ฒญ ๋ด์์ URL, ์์ฒญ ํค๋ ๋๋ ํ์ด๋ก๋๋ก ์ ์ก๋๋์ง ํ์ธํ์ธ์. ํด๋ผ์ด์ธํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์๋ฒ์ธก ์ธ์ ์ด๋ ๊ธฐํ ์๋ฒ์ธก ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. JWT(JSON ์น ํ ํฐ)์ ๊ฐ์ ์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ๋ฉด ๋ฌด๊ตญ์ ์ํ๋ฅผ ์๋ฐํ์ง ์๊ณ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ชฉ์ ์ ํ์ํ ํด๋ผ์ด์ธํธ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
์ ์ ํ ๋ฆฌ์์ค ๋ช ๋ช ๋ฐ ๊ตฌ์กฐํ
๋ฆฌ์์ค ์ด๋ฆ ์ง์ ๋ฐ ๊ตฌ์กฐํ๋ ์ง๊ด์ ์ด๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด REST API๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๋ค์ ์ง์นจ์ ํจ๊ณผ์ ์ธ ๋ฆฌ์์ค ์ด๋ฆ ์ง์ ๋ฐ ๊ตฌ์กฐํ๋ฅผ ์ค๊ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋์ฌ๊ฐ ์๋ ๋ช ์ฌ ์ฌ์ฉ: REST API ๋์์ธ์์ ๋ฆฌ์์ค๋ ๋์ฌ๊ฐ ์๋ ๋ช ์ฌ๋ก ํํ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "/getOrders" ๋๋ "/createOrder" ๋์ "/orders"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์์ ์์ฒด๊ฐ ์๋๋ผ ๋ฆฌ์์ค๊ฐ ์กฐ์๋๊ณ ์๋ค๋ ์ฌ์ค์ ๊ฐ์กฐํฉ๋๋ค.
- ๋จ์ํ๊ณ ์ค๋ช ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ์ดํดํ๊ธฐ ์ฝ๊ณ ๋ฆฌ์์ค์ ์๋ฏธ๋ฅผ ์ ํํ๊ฒ ์ ๋ฌํ๋ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด "/prdcts" ๋๋ "/inventory_items" ๋์ "/products"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์ ์ํ๊ฒ ์ฑํํ ์ ์๋ ์ง๊ด์ ์ธ API๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ปฌ๋ ์ ๋ฆฌ์์ค์ ๋ณต์ํ ์ฌ์ฉ: ๋ฆฌ์์ค ์ปฌ๋ ์ ์ ์ฒ๋ฆฌํ ๋ ๋ณต์ํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค(์: /orders, /customers). ์ด๋ ๋ฆฌ์์ค๊ฐ ํญ๋ชฉ ๋ชจ์์ ์ฐธ์กฐํ์ฌ ๊ฐ๋ฐ์๊ฐ API๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์์ ๋ํ๋ ๋๋ค.
- ๊ด๊ณ๋ฅผ ํํํ๊ธฐ ์ํ ์ค์ฒฉ ๋ฆฌ์์ค: ๋ฆฌ์์ค ๊ฐ์ ๋ช ํํ ๊ณ์ธต ๊ตฌ์กฐ๋ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ์ค์ฒฉ๋ URL์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ํํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, "/orders/123/items"๋ ์ฃผ๋ฌธ 123์ ์ํ๋ ํญ๋ชฉ์ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ URL ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ๊ฐ์ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋ํ๋ผ ์๋ ์์ต๋๋ค.
์ด๋ฌํ ์ง์นจ์ ์ค์ํ๋ฉด ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์๋น์ค์์ ํตํฉ์ ์ด์งํ๋ ์ฒด๊ณ์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฌ์ด REST API๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
REST API ๋ณด์
๋ณด์์ REST API ๋์์ธ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. API์ API๊ฐ ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๊ฒ์ ํด๋ผ์ด์ธํธ์์ ์ ๋ขฐ๋ฅผ ์ ์งํ๊ณ ์ ์ฌ์ ์ธ ์ํ์ผ๋ก๋ถํฐ ๋ฐฉ์ดํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ์น์ ์์๋ HTTPS ์ฌ์ฉ, ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ ๊ตฌํ, ์ก์ธ์ค ์ ์ด ๋ฐ ์๋ ์ ํ ์ ์ฑ ์ ์ฉ์ ํฌํจํ์ฌ REST API ๋ณด์์ ์ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํด ์ค๋ช ํฉ๋๋ค.
์ํธํ๋ ํต์ ์ HTTPS ์ฌ์ฉ
ํด๋ผ์ด์ธํธ์ API ๊ฐ์ ๋ชจ๋ ํต์ ์ HTTPS(Hypertext Transfer Protocol Secure)๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ์์ ํ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ์ฒซ ๋ฒ์งธ ๋ฐฉ์ด์ ์ ๋๋ค. HTTPS๋ SSL/TLS ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋ณด์ ์ฐ๊ฒฐ์ ์ค์ ํจ์ผ๋ก์จ ์ 3์๊ฐ ์ ์ก ์ค์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก์ฑ๊ฑฐ๋ ๋ณ์กฐํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๊ธฐ๊ด(CA)์์ SSL ์ธ์ฆ์๋ฅผ ํ๋ํ๊ณ ์ด๋ฅผ ์๋ฒ์ ๊ตฌํํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ API๋ฅผ ์ ๋ขฐํ๊ณ ์์ ํ๊ฒ ํต์ ํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ต์ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ๋ HTTPS๊ฐ ์๋ ์ฐ๊ฒฐ์ ์๋ํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ฌ ๊ณ์ํ๊ธฐ ์ ์ ์ฌ์ฉ์์๊ฒ ๋ค์ ๊ณ ๋ คํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ ๊ตฌํ
API ๋ฐ ํด๋น ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํ๋ ค๋ฉด ๊ฐ๋ ฅํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ์๋ฃจ์ ์ด ๋ง๋ จ๋์ด ์์ด์ผ ํฉ๋๋ค. OAuth 2.0, JWT(JSON ์น ํ ํฐ) ๋๋ API ํค์ ๊ฐ์ด ์ ํ๋ฆฝ๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ฉด ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.

OAuth 2.0์ ์ฌ์ฉ์๊ฐ ์๊ฒฉ ์ฆ๋ช ์ ๊ณต์ ํ์ง ์๊ณ ๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ์ฌํ ์ ์๋๋ก ๋๋ฆฌ ์ฑํ๋ ์ธ์ฆ ํ๋ ์์ํฌ์ ๋๋ค. ๋ฐ๋ฉด์ JWT๋ ๋น์ฌ์ ๊ฐ ์์ ํ ๋ฐ์ดํฐ ๊ตํ์ ํ์ฉํ๊ณ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ปดํฉํธํ๊ณ ๋ ๋ฆฝ์ ์ธ ํ ํฐ ํ์์ ๋๋ค. API ํค๋ ํด๋ผ์ด์ธํธ์ ๋ฐ๊ธ๋ ๊ณ ์ ์๋ณ์๋ก, ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ API ์ฌ์ฉ๋์ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ์์ ๋ฐ๋ผ ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ๊ฒฐํฉํ๋ฉด API์ ์ ์ฐํ๊ณ ์์ ํ๋ฉฐ ์ฌ์ฉ์ ์นํ์ ์ธ ์ก์ธ์ค ์ ์ด ์๋ฃจ์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ก์ธ์ค ์ ์ด ๋ฐ ์๋ ์ ํ ์ ์ฑ ์ ์ฉ
์ก์ธ์ค ์ ์ด๋ API ๋ฆฌ์์ค์ ๋ํ ๋ค์ํ ๊ถํ ์์ค์ ์ ์ํ๊ณ ํด๋ผ์ด์ธํธ๊ฐ ๊ถํ์ด ๋ถ์ฌ๋ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ์๋ง ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด(RBAC) ๋๋ ์์ฑ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด(ABAC)๋ฅผ ๊ตฌํํ๋ฉด API์ ๋ํ ๋ช ํํ๊ณ ์ ์ฐํ ๊ถํ ๊ตฌ์กฐ๋ฅผ ์ค์ ํ์ฌ ์ธ๋ถํ๋ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ์ ํํ ์ ์์ต๋๋ค.
์๋ ์ ํ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ ์๊ฐ ๋ด์ API์ ๋ณด๋ผ ์ ์๋ ์์ฒญ ์๋ฅผ ๊ท์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. ์๋ ์ ํ ์ ์ฑ ์ ์ ์ฉํ๋ฉด ๋จ์ฉ, ์ฌ๊ธฐ ๋ฐ ์๋ํ์ง ์์ ๋ฆฌ์์ค ๊ณ ๊ฐ์ ๋ฐฉ์งํ๋ ๋์์ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ณต์ ํ ์ฌ์ฉ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์์ฒญ ์๋ฅผ ์ ํํ๋ฉด ์ ์ฌ์ ์ธ ์๋น์ค ๊ฑฐ๋ถ(DoS) ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ API๋ฅผ ๋ณดํธํ๊ณ ์ ์์ ์ด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์๋น์ค๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
REST API ๋์์ธ์ AppMaster ์ ํตํฉ
REST API๋ฅผ ์๋์ผ๋ก ์ค๊ณํ๊ณ ๊ตฌํํ๋ ๊ฒ์ ๋ณต์กํ๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์์ ์ผ ์ ์์ง๋ง AppMaster ์ ๊ฐ์ ์ฝ๋ ์๋ ํ๋ซํผ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋์์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐ์ ์ผ๋ก API๋ฅผ ์์ฑํ ์ ์๋๋ก ํ์ฌ ์ด ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค. REST API ๋์์ธ์ AppMaster ์ ํตํฉํ๋ฉด ๊ด๋ฒ์ํ ์ฝ๋ฉ ์ ๋ฌธ ์ง์ ์์ด๋ ์ ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ํจ์จ์ ์ด๊ณ ์์ ํ API๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ์ด ์น์ ์์๋ REST API ์ค๊ณ ๋ฐ ๊ตฌํ์ AppMaster ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋น์ฆ๋์ค ํ๋ก์ธ์ค์ ์๊ฐ์ ๋์์ธ
AppMaster ์ ์ง๊ด์ ์ธ ์๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์์ฑํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์ค๊ณํ๊ณ , REST API ๋ฐ WebSocket endpoints ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ํ๋ซํผ์ ๊ฐ๋ ฅํ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋์์ด๋ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด REST ๋์์ธ ์์น์ ์ค์ํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ๋ฌธ์ ์ธ ํ์ง์ API๋ฅผ ์ ์ํ๊ฒ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์์ค ์ฝ๋ ๋ฐ ๋ฌธ์ ์๋ ์์ฑ
AppMaster ์ ์๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ API๋ฅผ ์ค๊ณํ๋ฉด ํ๋ซํผ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ ์์ค ์ฝ๋(Go์์), ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ TypeScript ๋ฐ Vue3 , Android ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Kotlin / Jetpack Compose ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ๋ํ AppMaster ํฌ๊ด์ ์ธ Swagger(OpenAPI) ๋ฌธ์๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ API๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ณ ํตํฉํ ์ ์๋๋ก ํฉ๋๋ค. ์๋์ผ๋ก ์์ฑ๋ ๋ฌธ์๋ API ์ค๊ณ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ํ๋ก์ ํธ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ ๋ฐ์ดํธ๋ฅผ ๋จ์ํํฉ๋๋ค.
๊ธฐ์ ์ ๋ถ์ฑ๊ฐ ์์ผ๋ฉฐ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
AppMaster ์๊ตฌ ์ฌํญ์ด ์์ ๋ ๋๋ง๋ค ์ฒ์๋ถํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์์ฑํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๊ณ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ ๋ฌธ์ ์ ๊ฐ๋ฐ ๋น์ฉ ์ฆ๊ฐ๋ฅผ ์ด๋ํ ์ ์๋ ์ฝ๋ ๋ถ์ฑ๋ฅผ ๋์ ํ์ง ์๊ณ ๋ REST API๊ฐ ํจ์จ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋์ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ด ํ์ํ ํ๋ก์ ํธ์ ํนํ ์ ํฉํ๋ฏ๋ก ์ค์๊ธฐ์ ๊ณผ ๋๊ธฐ์ ๋ชจ๋์๊ฒ ํ์ํ ์ ํ์ ๋๋ค.
์ ์ฐํ ๊ตฌ๋ ๊ณํ ๋ฐ ๋ฐฐํฌ ์ต์
AppMaster ์คํํธ์ ๋ถํฐ ๋๊ธฐ์ ๊น์ง ๋ค์ํ ๊ณ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋ค์ํ ๊ตฌ๋ ๊ณํ์ ์ ๊ณตํฉ๋๋ค. ๊ตฌ๋ ์์ค์ ๋ฐ๋ผ ์จํ๋ ๋ฏธ์ค ํธ์คํ ์ ์ํ ๋ฐ์ด๋๋ฆฌ ํ์ผ ๋ด๋ณด๋ด๊ธฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ฉ ์์ค ์ฝ๋ ์ก์ธ์ค ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค. ๋ํ ํน์ ์ฑ๋ฅ ๋ฐ ๋ณด์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด AppMaster ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๋๋ ์์ฒด ์๋ฒ์ API๋ฅผ ๋ฐฐํฌํ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
REST API ๋์์ธ์ AppMaster ์ ํตํฉํ๋ฉด ์ ๋ฌธ๊ฐ ์์ค์ REST API ๊ฐ๋ฐ์ ์์๋๋ ์๊ฐ, ๋ ธ๋ ฅ ๋ฐ ๋ณต์ก์ฑ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. AppMaster ์ ์๊ฐ์ ๋์์ธ ๋๊ตฌ์ ์๋ํ๋ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๊ณ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ณ ๋น์ฆ๋์ค ์ฑ์ฅ์ ๋์์ด ๋๋ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์์ ํ REST API๋ฅผ ์ค๊ณํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
REST ๋์์ธ ์์น์ REST(Representational State Transfer) ์์น์ ๊ธฐ๋ฐ์ผ๋ก ์น ์๋น์ค ๋ฐ API๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ผ๋ จ์ ์ง์นจ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค. ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ API๋ฅผ ์ค๊ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
REST(Representational State Transfer)๋ ์ผ๋ จ์ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ํ์ฌ ์น ์๋น์ค ๊ฐ๋ฐ์ ๋จ์ํํ๋ ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. ์ด๋ฌํ ์ ์ฝ์ผ๋ก ์ธํด ์ํ ๋น์ ์ฅ, ํ์ฅ์ฑ ๋ฐ ๋จ์์ฑ์ด ํฅ์๋์ด REST๊ฐ ์น API ๊ตฌ์ถ์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
REST ๋์์ธ์ ์ฃผ์ ์์น์๋ ๋ช ํํ๊ณ ์๋ฏธ ์๋ URI ์ฌ์ฉ, HTTP ๋ฉ์๋(GET, POST, PUT, DELETE) ํ์ฉ, ๋ฆฌ์์ค ํํ ์ฐ์ ์์ ์ง์ , ๋ฌด์ํ ์์ฉ, HATEOAS(์ ํ๋ฆฌ์ผ์ด์ ์ํ ์์ง์ผ๋ก์์ ํ์ดํผํ ์คํธ) ํตํฉ์ด ํฌํจ๋ฉ๋๋ค.
๋ช ํํ URI๋ RESTful API์ ๊ฐ๋ ์ฑ๊ณผ ์ดํด์ฑ์ ํฅ์์ํต๋๋ค. ๋ ผ๋ฆฌ์ ์ด๊ณ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๋ฆฌ์์ค์ ์์ ์ ๋ํ๋ด์ผ ํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด API๊ฐ ์๋ํ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ๊ฒ์์ ์ํ GET, ๋ฆฌ์์ค ์์ฑ์ ์ํ POST, ์ ๋ฐ์ดํธ๋ฅผ ์ํ PUT, ์ ๊ฑฐ๋ฅผ ์ํ DELETE์ ๋๋ค.
๋ฆฌ์์ค ํํ์ API ์๋ต์์ ๋ฐ์ดํฐ๊ฐ ๊ตฌ์กฐํ๋๊ณ ํ์ํ๋๋ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค. ์ ์ค๊ณ๋ ํํ์ ๋ฐ์ดํฐ ๊ตํ ํจ์จ์ฑ์ ํฅ์์ํค๊ณ ๋ถํ์ํ ๋ฐ์ดํฐ ์ ์ก์ ์ค์ ๋๋ค.
์, AppMaster ์ ๊ฐ์ ์ฝ๋ ์๋ ํ๋ซํผ์ ๋ฆฌ์์ค ์ ์, HTTP ๋ฉ์๋ ์ฒ๋ฆฌ ๋ฐ ๋ฆฌ์์ค ํํ ๊ด๋ฆฌ๋ฅผ ์ํ ์ง๊ด์ ์ธ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ RESTful API ๋์์ธ ์์น์ ๊ตฌํ์ ๋จ์ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๋ซํผ์ ํตํด ๊ฐ๋ฐ์๋ ๊ธฐ์กด ์ฝ๋ฉ ๊ธฐ์ ์ ํ์์ฑ์ ์ต์ํํ๋ฉด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ๋ RESTful API๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.


