API Blueprint๋ REST(Representational State Transfer) ์์น์ ์ค์ํ๋ API(์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค) ์ค๋ช ์ ์ํด ํน๋ณํ ์ต์ ํ๋ ๋์ ์์ค์ ํ์ ๋ ๋ฆฝ์ ์ํคํ ์ฒ ์ค๊ณ ์ธ์ด์ ๋๋ค. ๋จ์์ฑ๊ณผ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ตฌ๋ฌธ์ด ํน์ง์ธ ์ด API๋ ๊ฐ๋ฐ์์ ์ค๊ณ์๊ฐ ์น ๊ธฐ๋ฐ API์ ๊ตฌ์กฐ, ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ ํจํด์ ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ๊ฒ ๋ฌธ์ํํ ์ ์๋๋ก ํด์ค๋๋ค. API Blueprint ์ธ์ด๋ API ๋์์ด๋, ๊ฐ๋ฐ์ ๋ฐ ์๋น์ ๊ฐ์ ์ํํ ํ์ ์ ์ด์งํ์ฌ ๊ถ๊ทน์ ์ผ๋ก API ๊ฐ๋ฐ ๋ฐ ์ฑํ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ์ฌ AppMaster ํ๋ก์ ํธ๋ฅผ ํฌํจํ API ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์์ด์๋ ์๋ ๋ฆฌ์์ค๊ฐ ๋ฉ๋๋ค.
API Blueprint๋ ์์๋๋ HTTP ์์ฒญ ๋ฐ ์๋ต ๊ตฌ์กฐ, ์ธ์ฆ ๋ฐ ๋ณด์ ์กฐ์น, ๋ฆฌ์์ค ๋ฐ ์์ ์ ์, ๋ฐ์ดํฐ ํ์์ ํฌํจํ์ฌ API ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋์ ๋ํ ๋ช ํํ ์ง์นจ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. API Blueprint ํ์ผ์์ ์์ฑ๋ ๋ฌธ์๋ API ๊ฐ๋ฐ์ ์ํ ๋ช ์์ ์ธ ๊ณ์ฝ ์ญํ ์ ํ์ฌ API ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด์ฑ๊ณผ ์ ํ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ํ API Blueprint๋ ๋ชจ์ ์๋ฒ ์์ฑ์ ํตํด ์ ์ํ ํ๋กํ ํ์ดํ ๋ฐ ๊ฒ์ฆ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ํจ๊ณผ์ ์ธ TDD(ํ ์คํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ) ์ ๊ทผ ๋ฐฉ์์ ์ด์งํ๊ณ ์ด๊ธฐ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ์ต์ํํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
ํนํ RESTful API์ ์ ํฉํ API Blueprint ์ธ์ด๋ ๋จ์์ฑ, ๊ฐ๋ ์ฑ ๋ฐ ์ ํ์ฑ ์์น์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ทธ ๊ตฌ๋ฌธ์ ๊ตฌ์กฐํ๋ฅผ ์ํด ๊ฒฝ๋ Markdown ํ์์ ์ฌ์ฉํ๊ณ ๋ฉํ๋ฐ์ดํฐ ์บก์ํ๋ฅผ ์ํด ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ฌ์ด YAML ๋จธ๋ฆฌ๋ง์ ์ฌ์ฉํ์ฌ ์ธ๊ฐ๊ณผ ๊ธฐ๊ณ ๋ชจ๋๊ฐ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. API Blueprint ์ธ์ด๋ ์ ์ง ๊ด๋ฆฌ ๋ฐ ํ์ฅ์ด ๊ฐ๋ฅํ๋ฉฐ ๋ค์ํ ์ฐ์ ํ๊ฒฝ ๋ฐ API ์ฌ์ฉ ์ฌ๋ก์ ์ ์ํ ์ ์์ต๋๋ค. ์ค๊ณ ๋ชฉํ์๋ ํ์ต ๊ณก์ ์ ์ต์ํํ๊ณ ๊ธฐ์กด ๊ฐ๋ฐ ๋ฐ ๋ฌธ์ ์์ ํ๋ฆ์ ์ฝ๊ฒ ํตํฉํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
ํฌ๊ด์ ์ธ API ๋์์ธ ์ธ์ด์ธ API Blueprint๋ OpenAPI ์ฌ์(์ด์ ์ Swagger)๊ณผ ๊ฐ์ ๋์ฒด API ๋ฌธ์ ํ์์ ๋นํด ๋ช ๊ฐ์ง ๋๋ ทํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ฅ์ ์๋ ๋ณต์กํ API ์๋ฏธ ์ฒด๊ณ๋ฅผ ํํํ๋ ๊ฐ๋ ฅํ ํํ๋ ฅ, ๋์ฑ ๊ฐ๋ ฅํ ๊ตฌ๋ฌธ ๊ฒ์ฆ ๊ธฐ๋ฅ, ํฅ์๋ ์ ํ์ฑ๊ณผ ๋ช ํ์ฑ์ ์ํด ํน์ ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ API ๋์์ ์บก์ฒํ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค. ๋ํ API Blueprint ์ปค๋ฎค๋ํฐ๋ API ์ค๊ณ, ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ๋ค์ํ ๋จ๊ณ๋ฅผ ์ด์งํ๊ธฐ ์ํด ์คํ ์์ค ๋๊ตฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๋ก ๊ตฌ์ฑ๋ ํ๋ถํ ์์ฝ์์คํ ์ ๊ฐ๋ฐํ์ต๋๋ค.
์๋ฅผ ๋ค์ด, API Blueprint ๊ตฌ๋ฌธ ๋ถ์์ ์ํ ๊ธฐ๋ณธ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Drafter์ API Blueprint ๋ ๋๋ฌ์ธ Aglio์ ๊ฐ์ ๋๊ตฌ๋ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๋ API Blueprint ํ์์ ํ์ฉํ์ฌ ๋ํํ ๋ฌธ์๋ฅผ ์์ฑํ๊ณ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ ์ฝ๋ ์ํ์ ์์ฑํ๋ฉฐ ์๋ฎฌ๋ ์ด์ ๊ธฐ๋ฅ์ ์์ฒญํฉ๋๋ค. ๋ฐ ๋ด์ฅ๋ ๊ฒ์ฆ ๋๊ตฌ. API ํ ์คํธ ๋ฐ ๊ฒ์ฆ ๋๊ตฌ์ธ Dredd์ ๊ฐ์ ํ๋ ์์ํฌ๋ API Blueprint ๊ธฐ๋ฐ ๋ฌธ์๋ฅผ ์ค์ API ๋์๊ณผ ์๋์ผ๋ก ๋น๊ตํ๊ณ ๋ถ์ผ์น๋ฅผ ์๋ณํ๋ฉฐ ์ ์๋ API ๊ณ์ฝ ์ค์๋ฅผ ๋ณด์ฅํจ์ผ๋ก์จ API ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค.
AppMasterno-code ํ๋ซํผ์ ์ผ๋ถ์ธ API Blueprint๋ ์ ์ํ๊ณ ์ผ๊ด๋๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ API ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ด์งํ๋ ๋ฐ ํ์์ ์ธ ์ญํ ์ ํฉ๋๋ค. ๊ฐ๋ ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ชจ๋ธ๋ง, ๋ณด์ ๋ฐ ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๊ด๋ฆฌ ๊ธฐ๋ฅ๊ณผ ๊ฒฐํฉ๋ API Blueprint ์์ฑ ๋ฐ ๋ฌธ์ํ์ ๋ํ ํ๋ซํผ์ ๊ธฐ๋ณธ ์ง์์ ํตํด AppMaster ๊ณ ๊ฐ์ ์ต์ํ์ ๋น์ฉ์ผ๋ก ์ํฐํ๋ผ์ด์ฆ๊ธ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ , ๋ํํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๊ธฐ๋ณธ ๋ชจ๋ฐ์ผ ์ฑ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ ธ๋ ฅ๊ณผ ๊ธฐ์ ์ ๋ถ์ฑ๊ฐ ์์ต๋๋ค. ๋ํ ๊ฐ๋ฐฉํ ํ์ค, ์ํธ ์ด์ฉ์ฑ ๋ฐ ํ์ฅ์ฑ์ ๋ํ ํ๋ซํผ์ ๋ ธ๋ ฅ์ ํ์ฌ API ๋๊ตฌ, ์๋น์ค ๋ฐ ํ๋ซํผ๊ณผ์ ํธํ์ฑ์ ํฅ์์์ผ ์กฐ์ง์ ๊ธฐ์กด ๊ธฐ์ ์คํ๊ณผ์ ์ํํ ํตํฉ์ ์ง์ํ๊ณ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ์ ์๊ฐ์ ๊ฐ์ํํฉ๋๋ค.
์์ฝํ์๋ฉด, API Blueprint ์ธ์ด๋ AppMasterno-code ํ๋ซํผ ๋ฐ ๊ทธ ์ด์์์ API ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์ด์์ด ๋ ๊ณ ์ ํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. API Blueprint๋ RESTful API๋ฅผ ์ค๊ณํ๊ณ ๋ฌธ์ํํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ๊ณ ํํ๋ ฅ์ด ํ๋ถํ๋ฉฐ ๋ช ํํ ํ์์ ์ ๊ณตํจ์ผ๋ก์จ ํ์ ๊ฐ์ , ์ ์ํ ํ๋กํ ํ์ดํ ๋ฐ ์ค๋ฅ ๊ฐ์๋ฅผ ์ด์งํ์ฌ ๊ถ๊ทน์ ์ผ๋ก ๋ค์ํ ์ฌ์ฉ์์ ์ฌ์ฉ์๋ฅผ ์ํ ๋ ๋น ๋ฅด๊ณ ๋น์ฉ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ์ ๊ธฐ์ฌํฉ๋๋ค. ์กฐ์ง.