API
Application Programming Interface
์ ์
API ๋ Application Programming Interface ์ ์ฝ์๋ก, ๋ ๊ฐ ์ด์์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์๋ ์ค๊ฐ๊ณ์ธต์ ์๋ฏธํ๋ฉฐ, ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ๋ค ๊ฐ ํต์ ์ ํ๊ฒ ๋๋ค.
์ปดํจํฐ๊ฐ ์์ฒญ์ ๋ํด ์ด๋ป๊ฒ ํต์ ํ๋์ง, ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ๋ก ๋ฐ์์ง๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํด์ค๋ค.
์ฐธ๊ณ
๋น์ทํ ์๋ก, ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ธ User Interface๋ ์ฌ๋๊ณผ ์ปดํจํฐ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ค๊ฐ๊ณ์ธต์ด๋ค.
Web API, Web Socket API ๋ฑ ๋ค์ํ API ๊ฐ ์กด์ฌํ๋๋ฐ, ๋ณดํต API ๋ผ๊ณ ํ๋ฉด, ์น API๋ฅผ ์๋ฏธํ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ค.
๊ตฌ์กฐ
์น ์ฌ์ดํธ -> [์์ฒญ] -> ์ธํฐ๋ท -> API -> ์น ์๋ฒ -> ๋ฐ์ดํฐ๋ฒ ์ด์ค
์์ฒ๋ผ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ์ฌ์ด์ ์์นํ API๋ ๊ทธ ์ฌ์ด์์ ์ค๊ฐ๊ณ์ธต ์ญํ ์ ํ๋ฉด์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
์ฅ์
์ฌ์ฉ์
๊ท์ฐฎ๊ณ ๋ณต์กํ ์ ๋ณด๋ฅผ ์ ํ์์์ด ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ ์ ์๋ค.
๋ณต์กํ ์์คํ ์ด๋ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํ์ง ์๊ณ ๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ ์ ์๋ค. (OPEN API)
์ ๊ณต์
์๋น์ค์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ API ๋ค๋ก ๊ฐ์ถ ์ ์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๊ตฌ์กฐ๋ ์๋ฒ์ ์์๊ฐ ๋ฑ ๋๋ฌ๋ด๊ณ ์ถ์ง ์์ ์ ๋ณด๋ค์ API ๋ค๋ก ์จ๊ธธ ์ ์๋ค.
API๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ป์ ์ ์๊ณ , ์ด๋ฅผ ํตํด ์๋น์ค๋ฅผ ๋ฐ์ ์์ผ๋๊ฐ ์ ์๋ค.
๋ด๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋ก์ธ์ค๊ฐ ์์ ๋์ด๋ ๋งค๋ฒ ์ฆ๊ฐ์ ์ผ๋ก ์์ ํ์ง ์๊ณ , ์ฌ์ฉ์์๊ฒ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ณ๊ฒฝ์ ํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ํ ๊ณณ์ผ๋ก ๋ชจ์ ์ ์๋ค.
์ข
๋ฅ
private
๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ํด์ํค๋ฅผ ๋ฏธ๋ฆฌ ํ๋์ฝ๋ฉํด๋๊ณ ์ด ํค๋ฅผ ๊ฒ์ฌํ๋ฉฐ ์๋ฒ์ ์๋ฒ๊ฐ ํต์ ์ ํ๋ค.
๋น์ฆ๋์ค ํํธ๋์ ํค๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ๊ณ ๊ณต์ ํ์ฌ ํํธ๋ ๊ฐ์๋ ์ด์ฉํ ์๋ ์๋ค.
public
๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ ์ ์์ง๋ง
๋ง์ ํธ๋ํฝ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ํ๋ฃจ ์์ฒญ์๋ฅผ ์ ํํ๊ฑฐ๋ ๊ณ์ ๋น ๋ช ๊ฑด ์ ๋๋ก ์ ํํ๋ค.
์) ์นด์นด์ค๋ก ๋ก๊ทธ์ธํ๊ธฐ API
์ค์ต 1. OPEN API ์ด์ฉํด์ ๋ ์จ ์์ธก ์ฌ์ดํธ ๋ง๋ค๊ธฐ
OPEN API๋ก ๊ณต๊ฐ๋ ๋ ์จ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ฏธ๋ฆฌ ๋ ์จ๋ฅผ ์์ธกํ๋ ์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ค์ต 2. Node.js ๋ก ๊ฐ๋จํ API ๋ง๋ค๊ธฐ
API๋ฅผ ๋ง๋ค์ด ๋ด๋ถ์ ํ์ผ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํน์ ํ๋ก์ธ์ค๊ฐ ๋ณ๊ฒฝ๋์ด๋, ์ด๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ์ฌ์ฉ์์๊ฒ๋ ์ํฅ์ด ์๋๋ก ํ ์ ์๋ค.
์ฐธ๊ณ
Node.js : ๋น๋๊ธฐ์ ์ด๋ฒคํธ ์ฃผ๋ ๋ฐฉ์, ๋ ผ๋ธ๋กํน I/O ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๊ตฌ๊ธ์ v8 ์์ง์ ์ฅ์ฐฉํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด๋ค.
๋ฐํ์ : ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, ๋จธ๋ฌด๋ ๊ณต๊ฐ์ ์๋ฏธํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด๊ธฐ๋ ํ๋ค. ๋ธ๋ผ์ฐ์ ๋ผ๋ "๊ณต๊ฐ"์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๊ธฐ ๋๋ฌธ!
Node.js ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด๋ฏ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ๊ฒ์, ์๊ณ ๋ฆฌ์ฆ, ์๋ฒ ๋ฑ ๋ค์ํ ํ๋ก๊ทธ๋จ๋ค์ ์คํํ ์ ์๋ค. ๊ทธ ์ค ํ๋๊ฐ ์๋ฒ์ผ ๋ฟ์ด๋ค.
๋์์ด๋์๊ฒ API๋ฅผ ์ค๋ช
ํด๋ณด์
์๋ ํ์ธ์. ๋์์ด๋๋! ์ค๋์ API๊ฐ ๋ฌด์์ธ์ง์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ณ ์ ํด์. ๋ณด๋ค ์ํํ ์ค๋ช ์ ์ํด์ ์ฐ๋ฆฌ ํ์ฌ์ ํํ์ด์ง๋ฅผ ํจ๊ป ๋ง๋๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๊ณ ์๊ฐํด๋ณผ๊ป์.
ํ์ฌ ํํ์ด์ง์ ์ฐ๋ฆฌ๋ ๋์ ๊ฐ์ ์์๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ณ์ฐํด์ ๋ ธ์ถํ๊ณ ์ถ์ด์. ์๋ํด์ผ์ฃ ! ์ด๋ ์ฌ์ฉ์๊ฐ ๋ฐ๋ผ๋ณด๋ ์น ํ์ด์ง ํ๋ฉด์ ๋์์ด๋๋์ด ๋์์ธํ์คํ ๋ฐ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ณดํต UI ๋์์ธ์ด๋ผ๊ณ ๋ถ๋ฅด์ฃ .
๋์์ด๋๋์ด๋๊น UI๋ผ๋ ์ฉ์ด์ ๋ํด์๋ ์ต์ํ์ค ๊ฒ ๊ฐ์์. UI๋ User Interface ์ ์ฝ์๋ก ๋ณดํต ์น/์ฑ ์๋น์ค์์๋ ์ฌ์ฉ์์ธ User ๊ฐ ๋ณด๋ ์น/๋ชจ๋ฐ์ผ ํ๋ฉด์ ์๋ฏธํฉ๋๋ค. ํ ์คํธ ์ ๋ณด๋ ๋ฒํผ์ ํฌํจํด์ ์ฌ์ฉ์์ ์์คํ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ ๋ฌ๋ฐ์ ์ ์๋ ๋ชจ๋ ์์๋ฅผ ์๋ฏธํฉ๋๋ค.
์ด์ฒ๋ผ ์ธํฐํ์ด์ค๋ผ๋ ๋จ์ด๋ ์๋ก ๋ค๋ฅธ ๋ ์์คํ ๋ผ๋ฆฌ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋ ๊ณต์ ๊ฒฝ๊ณ์ ์ ์๋ฏธํฉ๋๋ค. ์ ํฌ ํ๋ก์ ํธ์์๋ ์ฌ์ฉ์๊ฐ ๋ฐ๋ผ๋ณด๋ ๊ธฐ์ ํํ์ด์ง ํ๋ฉด์ด ๊ทธ๊ฒ์ด ๋๊ฒ ์ง์.
ํ์ง๋ง ๋์์ธ๋ง ์์ฑ๋์๋ค๊ณ ํด์ ์ฐ๋ฆฌ๊ฐ ๊ธฐ์ ํํ์ด์ง๋ฅผ ์์ฑํ ๊ฒ์ ์๋์์. ์ค์๊ฐ์ผ๋ก ์ง๊ณ๋๋ ์ง์ง ๋ฐ์ดํฐ, ์ซ์๊ฐ ๋ ธ์ถ๋์ด์ผ์ฃ ! ๊ทธ๋ฌ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐจ๊ณก์ฐจ๊ณก ์ ์ฅ๋ ์ด ํ์๋ค์ ์๋ฅผ ๊ณ์ฐํด์ ๋ ธ์ถํด์ผํ๊ฒ ์ฃ ? ์ด๋ ์ด์ฉ๋๋๊ฒ ๋ฐ๋ก API์ ๋๋ค.
API๋ Application Programming Interface์ ์ฝ์๋ก, ์ญ์ ์ธํฐํ์ด์ค์ ๋๋ค. ๋ค๋ง ์ฌ๊ธฐ์๋ ์ฌ์ฉ์์ธ User์ ์ํตํ๋ ์ธํฐํ์ด์ค๊ฐ ์๋๋ผ, ์น ํํ์ด์ง์ ์๋ฒ๊ฐ ์ํตํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์์.
๋์์ด๋๋์ด ๋์์ธ์ ์์๊ฒ ๋๋ด๋ฉด, ํ๋ก ํธ ๊ฐ๋ฐ์ ๋ถ๋ค์ด ๋์์ธ์ ์ค์ ์น ์ฌ์ดํธ๋ก ๊ตฌํ์ ํ์ฃ . ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ฉด์ ํ์๋ ์ง์ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ API๋ฅผ ์ด์ฉํด ์๋ฒ์ ์์ฒญ์ ํฉ๋๋ค. "์ง๊ธ ์ ์ฒด ๊ฐ์ ์ ์๋ฅผ ์๋ ค์ฃผ์ธ์!"
๊ทธ๋ฌ๋ฉด ์์ฒญ์ ๋ฐ์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ์ ์ฒด ํ์์ ์๋ฅผ ์กฐํํ๊ณ ์น ํ์ด์ง์์ ์์๊ฒ ๋ ธ์ถํ ์ ์๋๋ก ํ์์ ๋ค๋ฌ์ด ์ ๋ฌํฉ๋๋ค. ์ด๋ ๊ฒ ์น ํ์ด์ง(ํด๋ผ์ด์ธํธ)์ ์๋ฒ๊ฐ ์ํตํ๋ ์ด ๊ณผ์ ์ API๋ผ๊ณ ํฉ๋๋ค.
API๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก, ์ด์ ์ฒด์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ดํ ์ ์๊ฒ ๋ง๋ ์ธํฐํ์ด์ค๋ฅผ ๋ปํ๋ค.
์ธํฐํ์ด์ค(interface)๋ ์ปดํจํฐ ์์คํ ๋ผ๋ฆฌ ์ ๋ณด๋ฅผ ๊ตํํ๋ ๊ณต์ ๊ฒฝ๊ณ๋ฅผ ์๋ฏธํ๋ค, ํฐ์น ์คํฌ๋ฆฐ๊ณผ ๊ฐ์ ์ผ๋ถ ์ปดํจํฐ ํ๋์จ์ด ์ฅ์น๋ค์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ ์์ผ๋ฉฐ, ๋ง์ฐ์ค๋ ๋ง์ดํฌ๋ก ํฐ๊ฐ ๊ฐ์ ์ฅ์น๋ค์ ์ค์ง ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ง ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
์ฐธ๊ณ
Last updated
Was this helpful?