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

ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์์ญ์์ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฒ์ ์น API์ ์๋ฌ์ ๋ฌ๋ ค ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. REST(Representational State Transfer)๋ ์ํํธ์จ์ด ์์คํ ์ ๋ค์ํ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ํํ ํต์ ์ ์ด์งํ๋ API๋ฅผ ์ค๊ณํ๊ณ ๊ตฌ์ถํ๋ ์ด์์ผ๋ก ๋ฑ์ฅํ์ต๋๋ค. REST์ ์ฐ์ํจ์ ๊ฐ๋ฐ์๊ฐ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ API๋ฅผ ๋ง๋ค ์ ์๋๋ก ํ๋ ๋จ์์ฑ๊ณผ ๊ธฐ๋ณธ ์ํคํ ์ฒ ์์น ์ค์์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ REST API ์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๊ธฐ๋ณธ ์์น์ ์ดํดํ๋ ๊ฒ ์ด์์ ๊ฒ์ด ํ์ํฉ๋๋ค. ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตํ๊ณผ ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ธฐ์ฌํ๋ ๊ณ ํ์ง API๋ฅผ ์ ์ํ๋ ค๋ฉด ์ค๊ณ, ๊ตฌํ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ฌ์ธต ๋ถ์์ด ํ์ํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ธฐ์ฌ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ์๋ก์ด ์ฐจ์์ผ๋ก ๋์ด์ฌ๋ฆฌ๋ ํ์ REST API ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์๊ฐํฉ๋๋ค.
์ธ์ฆ ๋ฐ ์น์ธ
REST API๋ฅผ ์ค๊ณํ ๋ ๋ฆฌ์์ค ๋ณด์์ ๋ณด์ฅํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ ๋ฌด๋จ ์ก์ธ์ค ๋ฐ ์ค์ฉ์ผ๋ก๋ถํฐ API๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ๊ณ ๋ คํด์ผ ํ๋ ๋ ๊ฐ์ง ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ์ฌ๊ธฐ์๋ ํจ๊ณผ์ ์ธ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๊ธฐ ์ํ ๋ค์ํ ์ ๋ต์ ๋ํด ๋ ผ์ํ๊ฒ ์ต๋๋ค.
์ ์ฆ
์ธ์ฆ์ API์ ์ก์ธ์คํ๋ ค๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ํจ๊ณผ์ ์ธ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ API ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์ฉํ๊ธฐ ์ ์ ์ฌ์ฉ์์ ์ ์์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค. RESTful API์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ธ์ฆ ์ฒด๊ณ์๋ ๊ธฐ๋ณธ ์ธ์ฆ, API ํค, OAuth 2.0 ๋ฐ JWT( JSON ์น ํ ํฐ)๊ฐ ํฌํจ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ ์ธ์ฆ: ๊ธฐ๋ณธ ์ธ์ฆ์์ ํด๋ผ์ด์ธํธ๋
Authorizationํค๋๋ฅผ ํตํด base64๋ก ์ธ์ฝ๋ฉ๋ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช (์: ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ)์ ๋ณด๋ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๊ตฌํํ๊ธฐ ์ฝ์ง๋ง ๋ณด์ ์์ค์ด ๋ฎ์ต๋๋ค. ํนํ ์ํธํ๋์ง ์์ ์ฐ๊ฒฐ์ ํตํด ์ ์ก๋๋ ๊ฒฝ์ฐ ์๊ฒฉ ์ฆ๋ช ์ด ์ ์ก ์ค์ ๊ฐ๋ก์ฑ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. - API ํค: API ํค๋ ๊ฐ ์ฌ์ฉ์ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋น๋ ๊ณ ์ ํ ํฐ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ API ์์ฒญ๊ณผ ํจ๊ป ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ๋๋ ํค๋๋ก ์ ๋ฌ๋ฉ๋๋ค. ๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ๊ฐ๋จํ ์ธ์ฆ ์๊ตฌ ์ฌํญ์ ๊ฐ์ถ ๊ณต๊ฐ API์ ์ ํฉํฉ๋๋ค. ๊ธฐ๋ณธ ์ธ์ฆ๋ณด๋ค ์์ ํ์ง๋ง OAuth 2.0 ๋ฐ JWT์ ๊ฐ์ ๊ณ ๊ธ ์ฒด๊ณ์์ ๋ณผ ์ ์๋ ์ธ๋ถ์ ์ธ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- OAuth 2.0: OAuth 2.0์ API์ ๋ํ ์์ ํ๊ณ ์์๋ ์ก์ธ์ค๋ฅผ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์ค์ ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๊ฒฉ ์ฆ๋ช ์์ด๋ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์์ ํ ์ ์๋๋ก ํฉ๋๋ค. OAuth 2.0์ ๋ค์ํ ์๋๋ฆฌ์ค(์: ์ธ์ฆ ์ฝ๋, ์์์ , ๋น๋ฐ๋ฒํธ ๋ฐ ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช )์ ๋ํ ๋ค์ํ ๋ถ์ฌ ์ ํ์ ์ ๊ณตํฉ๋๋ค.
- JSON ์น ํ ํฐ(JWT): JWT๋ ๋น์ฌ์ ๊ฐ ์ฒญ๊ตฌ๋ฅผ ์์ ํ๊ฒ ํ์ํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ๊ณ ๋ ๋ฆฝ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. OAuth 2.0๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋ณด์ ๊ณ์ธต์ ์ถ๊ฐํฉ๋๋ค. JWT๋ฅผ ์ฌ์ฉํ๋ฉด ์ญํ ์ด๋ ๊ถํ ๋ฑ ์ธ์ฆ๋ ์ฌ์ฉ์์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ํ ํฐ ์์ฒด์ ํฌํจํ ์ ์์ต๋๋ค. ํ ํฐ์ ์๋ฒ์์ ์๋ช ํ๊ณ ์ ํ์ ์ผ๋ก ์ํธํํ์ฌ ๋ณ์กฐ ๋ฐฉ์ง ๋ฐ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.

๊ถํ ๋ถ์ฌ
๊ถํ ๋ถ์ฌ๋ ์ญํ ์ด๋ ๊ถํ์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ๋ฆฌ์์ค์ ๋ํ ์ฌ์ฉ์ ์ก์ธ์ค๋ฅผ ํ์ฉํ๊ฑฐ๋ ๊ฑฐ๋ถํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ธ์ฆ์ด ์ฑ๊ณตํ ํ์ ๋ฐ์ํ๋ฉฐ ์ฌ์ฉ์๊ฐ API๋ก ์ํํ ์ ์๋ ์์ ๊ณผ ์ํํ ์ ์๋ ์์ ์ ์ ์ดํ๋ โโ๋ฐ ํ์์ ์ ๋๋ค. ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด(RBAC)์ ์์ฑ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด(ABAC)๋ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ตฌํํ๋ ๋ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
- RBAC(์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด): RBAC์์๋ ๊ถํ์ด ์ญํ ๊ณผ ์ฐ๊ฒฐ๋๋ฉฐ ์ฌ์ฉ์์๊ฒ๋ ์ฑ ์์ ๋ฐ๋ผ ์ญํ ์ด ๋ถ์ฌ๋ฉ๋๋ค. RBAC๋ ๊ตฌํ ๋ฐ ๊ด๋ฆฌ๊ฐ ์๋์ ์ผ๋ก ๊ฐ๋จํ๋ฏ๋ก ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
- ์์ฑ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด(ABAC): ABAC๋ ์ถ๊ฐ ์ฌ์ฉ์ ์์ฑ, ์ก์ธ์ค๋ ๋ฆฌ์์ค ๋๋ ํ๊ฒฝ์ ๊ณ ๋ คํ์ฌ RBAC๋ฅผ ํ์ฅํ์ฌ ๋ณด๋ค ์ธ๋ถํ๋ ์ก์ธ์ค ์ ์ด ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค. ABAC๋ RBAC๋ณด๋ค ๋ ์ ์ฐํ์ง๋ง ๊ตฌํ ๋ฐ ๊ด๋ฆฌ๊ฐ ๋ ๋ณต์กํฉ๋๋ค.
๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ง์ ์ค๋จ
API๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ธฐ์กด ํด๋ผ์ด์ธํธ์ ์ํฅ์ ์ค ์ ์๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. API ๋ฒ์ ๊ด๋ฆฌ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ณ API๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ ์ํํ ์ ํ์ ์ํด ์ค์ํฉ๋๋ค. REST API ๋ฒ์ ์ ์ง์ ํ๋ ์ธ ๊ฐ์ง ์ฃผ์ ์ ๋ต์ URI ๋ฒ์ ๊ด๋ฆฌ, ํค๋ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ฝํ ์ธ ํ์(ํค๋ ์๋ฝ)์ ๋๋ค.
- URI ๋ฒ์ ๊ด๋ฆฌ: ์ด๋ URI์ ๋ฒ์ ๋ฒํธ๋ฅผ ์ง์ ํฌํจํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์
๋๋ค. ์๋ฅผ ๋ค์ด
https://api.example.com/v1/users๋ฐhttps://api.example.com/v2/users. URI ๋ฒ์ ๊ด๋ฆฌ๋ ๊ตฌํํ๊ณ ์ดํดํ๊ธฐ ์ฝ์ง๋ง URI๊ฐ ๊ณ ์ ํ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด์ผ ํ๋ค๋ REST ์์น์ ์๋ฐํฉ๋๋ค. - ํค๋ ๋ฒ์ ๊ด๋ฆฌ: ์ด ์ ๊ทผ ๋ฐฉ์์์๋ API ๋ฒ์ ์ด
X-API-Version: 1๋๋X-API-Version: 2๊ฐ์ ์ฌ์ฉ์ ์ ์ ํค๋์ ์ง์ ๋ฉ๋๋ค. ํค๋ ๋ฒ์ ๊ด๋ฆฌ๋ URI ๋ฒ์ ๊ด๋ฆฌ๋ณด๋ค ๋ ๋ฐฉํด์ ์ด๊ณ URI๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ์ง๋ง ํด๋ผ์ด์ธํธ์๊ฒ๋ ๋ ์ง๊ด์ ์ผ ์ ์์ต๋๋ค. - ์ฝํ
์ธ ํ์(Accept ํค๋): ์ด ๋ฐฉ๋ฒ์ ํ์ค
Acceptํค๋๋ฅผ ํ์ฉํ์ฌ ๋ฏธ๋์ด ์ ํ์์ ์ํ๋ ๋ฒ์ ์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ดAccept: application/vnd.example.api-v1+json. ์ด๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์๋ณด๋ค REST ์์น์ ๋ ๋ฐ์ ํ๊ฒ ๋ฐ๋ฅด์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๊ณ ํด์ํ๊ธฐ๊ฐ ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ต๋๋ค.
์ ํํ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ๊ด๊ณ์์ด ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ ๊ฐ์๊ฒ ๋ฏธ๋ฆฌ ์๋ฆฌ๊ณ ์ ๋ฒ์ ์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ํ ๋ช ํํ ๋ฌธ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์๋๋ก ์ด์ API ๋ฒ์ ์ ๋ํ ์ง์ ํ์๋ผ์ธ์ ์ ์ํ๋ ๋ช ํํ ์ฌ์ฉ ์ค๋จ ์ ์ฑ ์ ์ค์ ํ์ธ์.
์บ์ฑ ์ ๋ต
์บ์ฑ์ ์๋ฒ ๋ก๋๋ฅผ ์ค์ด๊ณ , ์์ฒญ ๋๊ธฐ ์๊ฐ์ ์ค์ด๋ฉฐ, ๋์ญํญ ์ฌ์ฉ๋์ ์ต์ํํ์ฌ RESTful API์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ํ์์ ์ธ ๊ธฐ์ ์ ๋๋ค. API์ ์ ์ ํ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์์คํ ํจ์จ์ฑ์ด ํฌ๊ฒ ํฅ์๋ ์ ์์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์บ์ฑ ๊ธฐ์ ์ ๋๋ค.
- HTTP ์บ์ฑ:
ETag,Last-Modified๋ฐCache-Control๊ณผ ๊ฐ์ ํ์ค HTTP ํค๋๋ฅผ ํ์ฉํ์ฌ API์ ์บ์ฑ ๋์์ ์ ์ดํฉ๋๋ค. ์ด๋ฌํ ํค๋๋ ๋ฆฌ์์ค์ ์ต์ ์ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์กฐ๊ฑด๋ถ ์์ฒญ์ ํ์ฑํํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์บ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ์๋ฒ ์ธก ์บ์ฑ: ์์ฃผ ์ก์ธ์คํ๋ ๋ฆฌ์์ค๋ฅผ ์๋ฒ ์ธก ๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐํ ์บ์ฑ ์์คํ (์: Redis, Memcached)์ ์ ์ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์์ ์ ํ์์ฑ์ด ํฌ๊ฒ ์ค์ด๋ค์ด ์๋ต ์๊ฐ์ด ํฅ์๋ฉ๋๋ค.
- ์ฝํ ์ธ ์ ๋ฌ ๋คํธ์ํฌ(CDN): CDN์ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ์์ง ์๋ฒ์์ ๋ฆฌ์์ค ํํ์ ์บ์ํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด ์บ์๋ ๋ฆฌ์์ค ๋ณต์ฌ๋ณธ์ ์ ๊ณตํ์ฌ ๋๊ธฐ ์๊ฐ์ ์ต์ํํฉ๋๋ค. CDN์ ์ง๋ฆฌ์ ์ผ๋ก ํฐ ์ฌ์ฉ์ ๊ธฐ๋ฐ๊ณผ ์ฝํ ์ธ ๋ฐฐํฌ ์๊ตฌ ์ฌํญ์ด ๋ง์ API์ ํนํ ์ ์ฉํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์บ์ฑ: ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์บ์ฑ์ ์ค๋ณต ๊ณ์ฐ๊ณผ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์ ์ ์ต์ํํ์ฌ API ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด ๊ธฐ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์บ์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ต์ ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์ฌ์ฉ์ ์ ์ ๋ ผ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
ํจ๊ณผ์ ์ธ ์บ์ฑ ์ ๋ต์ ๊ตฌํํ๋ฉด REST API์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. API์ ํน์ ์๊ตฌ ์ฌํญ์ ํ๊ฐํ์ฌ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ๊ธฐ์ ์ ๊ฒฐ์ ํ์ธ์.
์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๊ฒ์ฆ
ํจ๊ณผ์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ REST API๋ฅผ ์ค๊ณํ ๋ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ์ด๋ฌํ ๊ดํ์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํค๊ณ API์ ์์ ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํต๋๋ค.
์ผ๊ด๋๊ณ ์๋ฏธ ์๋ HTTP ์ํ ์ฝ๋
REST์ ์ฃผ์ ์์น ์ค ํ๋๋ ์ ์ ํ HTTP ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ API ํธ์ถ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ ๋๋ค. API ์๋ต์ ํ์คํ๋ HTTP ์ํ ์ฝ๋๋ฅผ ์ฑํํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์๋ต ํ์ด๋ก๋๋ฅผ ๋ ๊น์ด ํ๊ณ ๋ค์ง ์๊ณ ๋ ์๋ต์ ํน์ฑ์ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ HTTP ์ํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- 200 OK: ์์ฒญ์ด ์ฑ๊ณตํ์์ ๋ํ๋ ๋๋ค.
- 201 Created: ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋์์์ ๋ํ๋ ๋๋ค.
- 204 ์ฝํ ์ธ ์์: ๋ฐํํ ์ถ๊ฐ ์ฝํ ์ธ ์์ด ์์ฒญ์ด ์ฑ๊ณตํ์์ ๋ํ๋ ๋๋ค.
- 400 ์๋ชป๋ ์์ฒญ: ํด๋ผ์ด์ธํธ์ ํ์์ด ์๋ชป๋์๊ฑฐ๋ ์ ํจํ์ง ์์ ์ ๋ ฅ์ ๋ํ๋ ๋๋ค.
- 401 Unauthorized: ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ด ๋๋ฝ๋์๊ฑฐ๋ ์๋ชป๋์์์ ๋ํ๋ ๋๋ค.
- 403 ๊ธ์ง๋จ: ์์ฒญํ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ๋ถ์กฑํจ์ ๋ํ๋ ๋๋ค.
- 404 ์ฐพ์ ์ ์์: ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์์ ๋ํ๋ ๋๋ค.
- 500 ๋ด๋ถ ์๋ฒ ์ค๋ฅ: ์ผ๋ฐ์ ์ธ ์๋ฒ ์ธก ์ค๋ฅ๋ฅผ ๋ํ๋ ๋๋ค.
์ค๋ช ์ ์ธ ์ค๋ฅ ๋ฉ์์ง
๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ์ค๋ช ์ ์ธ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ค๋ฅ๋ฅผ ์ผ์ผํค๋ ํน์ ํ๋, ์ค๋ฅ ์ด์ , ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
{ "error": { "status": 400, "message": "Invalid email address", "field": "email", "suggestion": "Please provide a valid email address" } }
์ ๋ ฅ ๊ฒ์ฆ
API ์์ค์์ ์ ๋ ฅ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ฉด ์๋ชป๋ ํ์์ ๋ฐ์ดํฐ๊ฐ ์์คํ ์ ์ ๋ ฅ๋์ด ์๊ธฐ์น ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ๋ชจ๋ ์ ๋ ฅ์ด ํ์ ๊ธฐ์ค์ ์ถฉ์กฑํ๋์ง ํ์ธํ๊ธฐ ์ํด ์๋ฒ์ธก ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ตฌํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ์ ํ๋๊ฐ ๋๋ฝ๋์๋์ง ๋๋ ๋ฐ์ดํฐ ์ ํ์ด ์์ ํ์๊ณผ ์ผ์นํ๋์ง ํ์ธํ์ธ์. ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๋ฉด ์ ์ ํ HTTP ์ํ ์ฝ๋์ ํจ๊ป ์ค๋ช ์ด ํฌํจ๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.
์ ํ ๋ฐ ์๋ ์ ํ
์ ํ ๋ฐ ์๋ ์ ํ์ ๋จ์ฉ์ ๋ฐฉ์งํ๊ณ ๊ณผ๋ํ ๋ก๋๋ก๋ถํฐ API๋ฅผ ๋ณดํธํ๋ฉฐ ๊ณต์ ํ ์ฌ์ฉ์ ๋ณด์ฅํ๋ ๋ฐ ํ์์ ์ธ ๊ดํ์ ๋๋ค. ์ด๋ ๋ฆฌ์์ค๋ฅผ ๋ณด์กดํ๊ณ API์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๊ฐ์ ํ๋ฉฐ DDoS์ ๊ฐ์ ์ ์์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ API๋ฅผ ๋ณดํธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
API ์๋ ์ ํ
API ์๋ ์ ํ์ ํด๋ผ์ด์ธํธ๊ฐ ํน์ ๊ธฐ๊ฐ ๋ด์ ์ํํ ์ ์๋ API ์์ฒญ ์๋ฅผ ์ ํํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ณ ์ ์ฐฝ: ์๊ฐ ์ฐฝ ๋ด์์ ๊ณ ์ ๋ ์์ ์์ฒญ์ ํ์ฉํฉ๋๋ค(์: ์๊ฐ๋น 1000๊ฐ์ ์์ฒญ).
- ์ฌ๋ผ์ด๋ฉ ์ฐฝ: ๊ฐ ์์ฒญ ํ ์ฐฝ์ ์ง์์ ์ผ๋ก ์๋ก ๊ณ ์ณ ์ฐ์ ๊ธฐ๊ฐ์ ๊ตฌํํฉ๋๋ค(์: ๊ฐ ํธ์ถ ํ ์ฐฝ์ด ์๋ก ๊ณ ์ณ์ง๋ ์๊ฐ๋น 1000๊ฐ ์์ฒญ).
- ๋ฒํท(ํ ํฐ) ๊ธฐ๋ฐ: ๊ฐ ์์ฒญ์ ์ฌ์ฉ๋๋ ๊ณ ์ ๋ ์์ ํ ํฐ์ ํด๋ผ์ด์ธํธ์ ํ ๋นํฉ๋๋ค. ํ ํฐ์ด ๊ณ ๊ฐ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์ถ๊ฐ ์์ฒญ์ ํ๊ธฐ ์ ์ ํ ํฐ ๋ณด์ถฉ์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
API ์กฐ์
API ์ ํ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋๋ ์๋๋ฅผ ์ ์ดํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ฐฐํฌํ์ฌ ์์๊ฐ ๋ง์ ๊ธฐ๊ฐ์๋ API๊ฐ ํด๋ผ์ด์ธํธ์ ๊ณ์ ์๋ตํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ํ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋์ ์์ฒญ: ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์งํํ ์ ์๋ ์์ฒญ ์๋ฅผ ์ ํํฉ๋๋ค.
- ์์ฒญ ์ฐ์ ์์ ์ง์ : ํด๋ผ์ด์ธํธ ์ ํ, ์ฌ์ฉ ํจํด ๋๋ ๊ฐ๊ฒฉ ์ฑ ์ ๊ณ์ธต๊ณผ ๊ฐ์ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฒญ์ ์ฐ์ ์์๋ฅผ ์ง์ ํฉ๋๋ค.
- ์ ์ํ ์กฐ์ : ํ์ฌ ์์คํ ๋ก๋ ๋๋ ์ฑ๋ฅ์ ๋ฐ๋ผ ์๋ ์ ํ์ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค.
API ๋ฌธ์์ X-RateLimit-* headers ์ ๊ฐ์ ์๋ต ํค๋๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ ์ ํ ๋ฐ ์ ํ ์ ์ฑ
์ ์ ๋ฌํด์ผ ํฉ๋๋ค.
๋ฌธ์ํ ๋ฐ ํ ์คํธ
๋ช ํํ ๋ฌธ์ ์ ๊ณต๊ณผ ์ฒ ์ ํ ํ ์คํธ๋ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ API ์ฑํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ API ๊ฐ๋ฐ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค.
API ๋ฌธ์
API๋ฅผ ๋ฌธ์ํํ๋ฉด ๊ฐ๋ฐ์๋ API์ ์ ์ํ๊ฒ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ, ์ฌ์ฉ ๊ฐ๋ฅํ endpoints ๋ฐ ์ํํ ์ ์๋ ์์ฒญ ์ ํ์ ์ดํดํ ์ ์์ต๋๋ค. API ๋ฌธ์์ ๋ค์ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ํ๋ก์ธ์ค
- ์์ ์์ฒญ ๋ฐ ์๋ต์ด ํฌํจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ endpoints
- HTTP ๋ฉ์๋, ๋งค๊ฐ๋ณ์ ๋ฐ ์์ ์๋ต ํ์
- ์ค๋ฅ ์ฝ๋ ๋ฐ ๋ฉ์์ง
- ์๋ ์ ํ ๋ฐ ์กฐ์ ์ ๋ณด
- API ๋ฒ์ ๊ด๋ฆฌ ์ธ๋ถ์ ๋ณด
Swagger(OpenAPI)๋ REST API ๋ฌธ์ํ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์ค์ ๋๋ค. API ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ธฐ ์ํ JSON ๋๋ YAML ๊ธฐ๋ฐ ํ์์ ์ ๊ณตํ๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ API๋ฅผ ํ์ํ๊ณ ํ ์คํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ํํ ๋ฌธ์๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
API ํ ์คํธ
API๋ฅผ ํ ์คํธํ๋ฉด API๊ฐ ๋ค์ํ ์กฐ๊ฑด์์ ์ฌ๋ฐ๋ฅด๊ณ ์ผ๊ด๋๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ ์ ํ ํ ์คํธ๋ ํด๋ผ์ด์ธํธ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ๋ฒ๊ทธ, ์ฑ๋ฅ ๋ฌธ์ ๋ฐ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ค์์ ํฌํจํ๋ ๊ฐ๋ ฅํ ํ ์คํธ ์ ๋ต์ ๊ฐ๋ฐํ์ญ์์ค.
- ๊ฐ๋ณ ๊ตฌ์ฑ ์์์ ๋ํ ๋จ์ ํ ์คํธ
- ๊ตฌ์ฑ ์์์ ์ธ๋ถ ์์คํ ๊ฐ์ ์ํธ ์์ฉ์ ๊ฒ์ฆํ๊ธฐ ์ํ ํตํฉ ํ ์คํธ
- ๊ณผ๋ถํ ์ํ์์ ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ก๋ ํ ์คํธ
- ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ์ฐพ๊ณ ๋ฐ์ดํฐ ๋ณดํธ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ๋ณด์ ํ ์คํธ
Postman, SoapUI ๋ฐ JUnit๊ณผ ๊ฐ์ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ API ํ ์คํธ ์์ฑ, ์คํ ๋ฐ ์๋ํ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค. AppMaster ์ ๊ฐ์ ํ๋ซํผ์ ์ฌ์ฉํ๋ฉด REST API ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ์๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค. ์ฝ๋๊ฐ ์๋ ํ๋ซํผ์ ์ฌ์ฉํ๋ฉด Swagger ๋ฌธ์ํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ๊ณผ ๊ฐ์ ์์ ์ ์๋ํํ๋ ๋์์ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋ฐ endpoints ์๊ฐ์ ์ผ๋ก ๋์์ธํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์ ์ ๋ถ์ฑ๊ฐ ์ ๊ฑฐ๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ ๋น ๋ฅด๊ฒ ์์ฑ๋๋ฉฐ, ๊ฐ๋ฐ ๋น์ฉ์ด ์ ๊ฐ๋์ด ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ์ ๋ง๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ API ์๋ฃจ์ ์ด ๋ณด์ฅ๋ฉ๋๋ค.
REST API ๊ฐ๋ฐ์ ์ํ AppMaster ์ฌ์ฉ
REST API ๊ฐ๋ฐ์ ํนํ ๋์์ธ, ํ์ฅ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ ๋ ์ด๋ ต๊ณ ๋ณต์กํ ํ๋ก์ธ์ค๊ฐ ๋ ์ ์์ต๋๋ค. AppMaster ์ ๊ฐ์ ๊ฐ๋ ฅํ no-code ํ๋ซํผ์ ํ์ฉํ๋ฉด API ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๊ฐ์ํํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ ์์ ํ API ์์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ด ์น์ ์์๋ AppMaster ์ด๋ป๊ฒ REST API ๊ฐ๋ฐ์ ๊ฐ์ํํ๊ณ , ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ ๊ฑฐํ๋ฉฐ, ์ค์๊ธฐ์ ๋ฐ ๊ธฐ์ ์ ๋ณด๋ค ๋น์ฉ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋ฐ ์๋ํฌ์ธํธ์ ์๊ฐ์ ๋์์ธ
REST API ๊ฐ๋ฐ์์ AppMaster ์ฌ์ฉํ๋ ์ฃผ์ ์ด์ ์ค ํ๋๋ ์๊ฐ์ ๋์์ธ ๊ธฐ๋ฅ์ ๋๋ค. AppMaster ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์นํ์ ์ธ ์๊ฐ์ BP Designer ๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ชจ๋ธ (๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง) ๋ฐ ๋น์ฆ๋์ค ๋ก์ง(๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ฅผ ํตํด)์ ์์ฑํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค๋ REST API์ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ๋ณดํธํ๊ณ ๋ค์ํ ๋ฆฌ์์ค ๊ฐ์ ๋ณต์กํ ๋ ผ๋ฆฌ์ ๊ด๊ณ์ ๊ฐ๋ฐ ๋ฐ ํตํฉ์ ๋จ์ํํฉ๋๋ค.
๋ํ AppMaster ์ฌ์ฉํ๋ฉด ์๊ฐ์ ์๋ํฌ์ธํธ ๋์์ด๋๋ฅผ ์ฌ์ฉํ์ฌ REST API ๋ฐ WSS endpoints ์ ์ํ๊ณ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด endpoints ์ค๊ณ, ํ ์คํธ ๋ฐ ์ ๋ฐ์ดํธ ์์ ์ด ๋จ์ํ๋์ด API๊ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ํ์ฅ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅ๋ฉ๋๋ค.
์๋ํ๋ ์ฝ๋ ์์ฑ ๋ฐ ๋ฐฐํฌ
REST API ๊ฐ๋ฐ๊ณผ ๊ด๋ จํ์ฌ ํจ์จ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ ์์ ์ ์ธ ์ฝ๋ ์์ฑ์ ์ฑ๊ณต์ ๋งค์ฐ ์ค์ํฉ๋๋ค. AppMaster '๊ฒ์' ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์์ค ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ฌ๊ธฐ์๋ Go(golang) ๋ก ์์ฑ๋ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ , Vue3 ํ๋ ์์ํฌ ๋ฐ JS/TS๋ฅผ ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ , Android์ฉ Kotlin ๋ฐ Jetpack Compose ๋๋ iOS์ฉ SwiftUI ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌํจ๋ฉ๋๋ค.
๊ทธ ๊ฒฐ๊ณผ, ๊ตฌํ ์ค ์๊ฐ์ ์ ์ฝํ๊ณ ์ค๋ฅ ์ํ์ ์ค์ด๋ ๊ฐ์ํ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ํ์ํ์ต๋๋ค.
Swagger ๋ฌธ์ํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์
์ผ๊ด๋๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋ฌธ์๋ ํด๋ผ์ด์ธํธ์๊ฒ API ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ API์์ ๊ธฐ๋ํ ์ ์๋ ์ฌํญ์ ๋ํ ๋ช ํํ ์ดํด๋ฅผ ์ ๊ณตํ๋ฏ๋ก REST API ๊ฐ๋ฐ์ ํ์์ ์ ๋๋ค. AppMaster ์๋ฒ endpoints ์ ๋ํ Swagger(Open API) ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ์ด๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด API์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ช ํํ ํต์ ์ฑ๋์ด ๋ณด์ฅ๋์ด ํตํฉ ๋ฌธ์ ์ ์ํ์ด ์ค์ด๋ค๊ณ API ์ฑํ์ด ์ฌ์์ง๋๋ค.
๋ํ AppMaster ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๊ด๋ฆฌํ์ฌ ๋ค์ํ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ ์งํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ ์ฌํญ์ ์ํํ ๋ฐฐํฌ ๋ฐ ํตํฉ์ ๋ณด์ฅํฉ๋๋ค.
ํ์ฅ์ฑ ๋ฐ ์ํฐํ๋ผ์ด์ฆ๊ธ ๊ธฐ๋ฅ
ํ์ฅ ๊ฐ๋ฅํ๊ณ ์์ ์ ์ธ REST API๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. AppMaster ํธ๋ํฝ์ด ๋ง์ ๊ธฐ์ ์์ค ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ํ์ํ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๋ณด์ฌ์ฃผ๋ ์ปดํ์ผ๋ ์ํ ๋น์ ์ฅ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํจ์ผ๋ก์จ ์ด ๋ถ์ผ์์ ๋น์ ๋ฐํฉ๋๋ค. ์ฆ, API๋ฅผ ์ค์๊ธฐ์ ๋ถํฐ ๋๊ธฐ์ ๊น์ง ๋ค์ํ ๊ท๋ชจ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ด ์ผ๊ด๋๊ณ ์์ ์ ์ธ API ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
REST API ๊ฐ๋ฐ์ ์ํ ๋น์ฉ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์ฐพ๊ณ ์๋ค๋ฉด AppMaster ๊ฐ์ฅ ์ข์ต๋๋ค. ์๊ฐ์ ๋์์ธ ๊ธฐ๋ฅ, ์๋ํ๋ ์ฝ๋ ์์ฑ ๋ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๊ฐ์ถ AppMaster API ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๊ณ REST API๊ฐ ์ต๊ณ ์ ํ์ฅ์ฑ, ์ ์ง ๊ด๋ฆฌ์ฑ ๋ฐ ๋ณด์ ๊ดํ์ ๋ฐ๋ฅด๋๋ก ๋ณด์ฅํฉ๋๋ค.
AppMaster ์ no-code ํ๋ซํผ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๋ ์งง์ ์๊ฐ๊ณผ ๋ ์ ์ ๋ฆฌ์์ค๋ก ๋ ๋์ API๋ฅผ ์์ฑํ ์ ์์ด ์ค๋๋ ๋์์์ด ์งํํ๋ ๊ธฐ์ ์ฐ์ ์์ ๊ฒฝ์ ์ฐ์๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค. ์ง๊ธ AppMaster๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํด ๋ณด๊ณ ์ฐจ์ด์ ์ ์ง์ ํ์ธํด ๋ณด์ธ์!
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
REST API ๋ชจ๋ฒ ์ฌ๋ก๋ ๊ฐ๋ฐ์๊ฐ REST(Representational State Transfer) ์์น์ ๋ฐ๋ผ ํจ๊ณผ์ ์ด๊ณ ํจ์จ์ ์ธ API๋ฅผ ์ค๊ณ, ๊ตฌ์ถ ๋ฐ ์ ์งํ๋ ๋ฐ ๋์์ด ๋๋ ์ผ๋ จ์ ์ง์นจ ๋ฐ ์์น์ ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ API์ ์ต์ ์ ํต์ , ํ์ฅ์ฑ, ๋ณด์ ๋ฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
REST API ๋ชจ๋ฒ ์ฌ๋ก๋ API๊ฐ ํ์คํ๋๊ณ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ค๊ณ๋๋๋ก ๋ณด์ฅํ์ฌ ํฅ์๋ ์ํธ ์ด์ฉ์ฑ, ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ ๋ฐ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์์คํ ๊ฐ์ ํตํฉ ์ฉ์ด์ฑ์ ์ด๋์ด๋ ๋๋ค.
REST API ๋์์ธ์ ์ฃผ์ ์์น์๋ ๋ช ํํ๊ณ ์๋ฏธ ์๋ URI ๊ตฌ์กฐ ์ฌ์ฉ, ์ ์ ํ HTTP ๋ฉ์๋(GET, POST, PUT, DELETE) ํ์ฉ, ๋ฆฌ์์ค ํํ ์ฐ์ ์์ ์ง์ , ์ํ ๋น์ ์ฅ ๋ฐ HATEOAS(์ ํ๋ฆฌ์ผ์ด์ ์ํ ์์ง์ผ๋ก์์ ํ์ดํผํ ์คํธ)๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ช ํํ URI ๊ตฌ์กฐ๋ API์ ๊ฐ๋ ์ฑ๊ณผ ์ดํด์ฑ์ ํฅ์์ํต๋๋ค. ์ก์ธ์ค๋๋ ๋ฆฌ์์ค๋ฅผ ๋ฐ์ํ๊ณ ๋ถํ์ํ ๋ณต์ก์ฑ์ด๋ ๋ชจํธ์ฑ์ ํผํด์ผ ํฉ๋๋ค.
์ ์ ํ HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด API๊ฐ ์๋ํ ์์ ์ ์ค์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ๊ฒ์์๋ GET, ์์ฑ์๋ POST, ์ ๋ฐ์ดํธ์๋ PUT, ๋ฆฌ์์ค ์ ๊ฑฐ์๋ DELETE๊ฐ ์์ต๋๋ค.
๋ฆฌ์์ค ํํ์ API ์๋ต์์ ๋ฐ์ดํฐ๊ฐ ๊ตฌ์กฐํ๋๊ณ ํ์ํ๋๋ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค. ์ ์ค๊ณ๋ ํํ์ ๋ฐ์ดํฐ ๊ตํ ํจ์จ์ฑ์ ํฅ์์ํค๊ณ ๋ถํ์ํ ๋ฐ์ดํฐ ์ ์ก์ ์ค์ ๋๋ค.
์ํ ๋น์ ์ฅ์ ์ํคํ ์ฒ๋ฅผ ๋จ์ํํ๊ณ ๊ฐ API ์์ฒญ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ์์ ์ฑ, ํ์ฅ์ฑ ๋ฐ ์บ์ฑ ๊ฐ๋ฅ์ฑ์ด ํฅ์๋ฉ๋๋ค.
์, AppMaster ์ ๊ฐ์ no-code ํ๋ซํผ์ ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ๋ฉด์ REST API๋ฅผ ์ค๊ณํ๊ณ ๊ตฌํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ฌํ ํ๋ซํผ์ endpoints ๋ฅผ ์ ์ํ๊ณ , ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ณ , HTTP ๋ฉ์๋๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์ ์ ํ ๋ณด์์ ๋ณด์ฅํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฏ๋ก ๊ธฐ์กด ์ฝ๋ฉ ๊ธฐ์ ์์ด๋ ํจ์จ์ ์ธ API ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.


