1. API๋?
์ค๋งํธํฐ์ผ๋ก ์นด์นด์คํก์ ๋ก๊ทธ์ธํ๋ ค๋ ์ํฉ์ ๋ ์ฌ๋ ค๋ด
์๋ค.
์ค๋งํธํฐ์ด ๋ณด๋ธ ๋ก๊ทธ์ธ ์์ฒญ์ ์นด์นด์ค ๋ณธ์ฌ์ ์๋ฒ ์ปดํจํฐ ์ค ํ๋๊ฐ ๋ฐ์ ๋ค์, ์๋ง์ ์๋ต์ ๋ค์ ์ค๋งํธํฐ์๊ฒ ๋๋ ค์ฃผ๊ฒ ๋ฉ๋๋ค. (๋ก๊ทธ์ธ ์ฒ๋ฆฌ์ํค๊ธฐ, "๋ก๊ทธ์ธ ์ฑ๊ณต"๋ฉ์์ง ๋์ฐ๊ธฐ ๋ฑ)
์ด๊ฒ ๋ฐ๋ก "ํด๋ผ์ด์ธํธ(์์ฒญํ๋ ์ปดํจํฐ=๋ด ์ค๋งํธํฐ) - ์๋ฒ (์๋ตํ๋ ์ปดํจํฐ=์นด์นด์ค ์๋ฒ)"๊ตฌ์กฐ์ธ๋ฐ์.
ํด๋ผ์ด์ธํธ๋ ๋น๋จ ๋ก๊ทธ์ธ๋ฟ ์๋๋ผ, ์น๊ตฌ ์ถ๊ฐ, ๋ฉ์์ง ๋ฐ์ก, ๋ฉ์์ง ์ญ์ ๋ฑ ์๋ง์ ์์ฒญ๋ค์ ์๋ฒ์ ๋ณด๋ด๊ฒ ๋ ํ ๋ฐ, ๊ฐ ์์ฒญ๋ค์ ์ผ์ผ์ด ๋์ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ผ ๊ฒ์ ๋๋ค.
๊ฐ๊ฐ์ ์์ฒญ๋ค์ ๋ด๋นํ๋ ์๋ฒ์๊ฒ ์์ฒญ์ด ์ ์ ๋ฌ ๋ฐ ์ฒ๋ฆฌ๋ ์ ์๋๋ก ๊ตํต์ ๋ฆฌ๋ฅผ ํด์ฃผ๋ "์ฒด๊ณ"๊ฐ ๋ฐ๋ก API์ ๋๋ค.
์ถ์ฒ: http://sahilsk.github.io/articles/so-youre-writing-api-client
์ฆ, "์ด๋ ํ ๋ฐฉ์์ผ๋ก ์ ๋ณด๋ฅผ ์์ฒญํด์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฌํ ์์ฒญ์ ๋ณด๋์ ๋ ์ด๋ ํ ํ์์ผ๋ก ๋ฌด์จ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ์ ์๋์ง"์ ๋ํด ์ ๋ฆฌํ ์ผ์ข ์ ๊ท๊ฒฉ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
(์์ ์น๊ตฌ ์ถ๊ฐ, ๋ฉ์์ง ๋ฐ์ก ๋ฑ ์์ฒญ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ํ๋ํ๋๊ฐ ๋ชจ๋ API๊ฐ ๋ฉ๋๋ค.)
์ด์ API์ ํ๋ค์์ ํ์ด์ ์ดํดํด๋ด ์๋ค.
"Application Programming Interface (์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค)"
์ฆ, "์ ํ๋ฆฌ์ผ์ด์ (์ค๋งํธํฐ, ์นด์นด์คํก ์๋ฒ ๋ฑ ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ)์ด ์ธํฐํ์ด์ฑํ๋(์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ๋) ์ฒด๊ณ"๋ผ๊ณ ์ดํดํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
2. API๋ ์ด๋ป๊ฒ ์๊ฒผ๋์?
๊ณต๊ณต๋ฐ์ดํฐํฌํธ์ ๋ฑ๋ก๋ ๋ฐ์ดํฐ์ API ์ ํ(REST), ๋ฐ์ดํฐํฌ๋งท(JSON+XML)
1) API ๊ตฌํ ๋ฐฉ๋ฒ: API๋ฅผ ์์ฑํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์์ผ๋, ๊ฐ์ฅ ํธ๋ ๋ํ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก REST API์ ๋๋ค. REST API์ ๋ํด์๋ ์๋์์ ๋ค์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
2) API ๊ฒฐ๊ณผ(๋ฐ์ดํฐ) ์ ๊ณต ํ์: ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ํ์์ ์ฃผ๋ก "JSON", "XML"์ ๋๋ค. ์์ฒญ์ ๊ฒฐ๊ณผ๋ก ๋ฐ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์๋ ํต์ผ๊ฐ์ ์ค ์ ์๋๋ก ๊ณตํต์ ํฌ๋งท์ ์ ํ ๊ฒ์ธ๋ฐ์. ์ต๊ทผ์ JSON์ด ๋ง์ด ์ฐ์ด๊ณ ์์ต๋๋ค.
3) API ํ์ฉ ๋ฐฉ๋ฒ: API ๋ฌธ์๋ฅผ ๋ณด์๋ฉด ๋ฉ๋๋ค. ํ์ฌ ์๋ง์ ๊ธฐ์ ๋ค์ด ์์ฌ์ ์๋น์ค์ ๋ฐ์ดํฐ๋ฅผ API ํํ๋ก ์ ๊ณตํ๊ณ ์๊ณ , ๊ฐ API์ ํ์ฉ ๋ฐฉ๋ฒ์ ์ ์ ๋ฆฌํด๋์ API ๋ฌธ์๋ฅผ ๊ณต๊ฐํ๊ณ ์์ต๋๋ค. (=ํฅํ ์ค๋ช ํ "Open API")
API ๋ฌธ์๋, ๊ฐ ๊ธฐ์ ์ด ๋ง๋ API์ ์ฌ์ฉ๋ฒ์ด ๋ด๊ธด ์ผ์ข ์ API ๋งค๋ด์ผ๋ก, ์ด๋ค ๊ธฐ๋ฅ์ ๋ถ๋ฌ์ฌ ์ ์๋์ง, ๊ฐ ๊ธฐ๋ฅ์ ํ์ํ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด์๋ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ์์ฒญํด์ผ ํ๋์ง ๋ฑ์ด ์์ธํ ๊ธฐ์ ๋์ด ์์ต๋๋ค.
(์์) ์นด์นด์ค API ๋ฌธ์์์ ๊ธฐ์ ๋ "์นด์นด์ค ๋ก๊ทธ์ธ" ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช ๊ณผ API ๊ตฌํ ์ฌ๋ถ (์ถ์ฒ: https://developers.kakao.com/docs/latest/ko/kakaologin/common)
์๋ ์์๋, ์นด์นด์ค API๋ฌธ์ ๋งํฌ์ ๋๋ค. ์ฐธ๊ณ ํด๋ณด์ธ์!
Kakao Developers
์นด์นด์ค API๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด๋ณด์ธ์. ์นด์นด์ค ๋ก๊ทธ์ธ, ๋ฉ์์ง ๋ณด๋ด๊ธฐ, ์น๊ตฌ API, ์ธ๊ณต์ง๋ฅ API ๋ฑ์ ์ ๊ณตํฉ๋๋ค.
developers.kakao.com
3. API๊ฐ ์ ํ์ํ๊ฐ์?
1) ๊ฐ๋ฐ ๋ฐ ๊ด๋ฆฌ์ ํจ์จ์ฑ
API๋ฅผ ์ฌ์ฉํ๋ฉด, ์ค์ ๋ก ์๋น์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌํ๋์๋์ง๋ ๋ชฐ๋ผ๋ ๊ทธ ์๋น์ค๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฆ, ๋งค๋ฒ ์๋ก์ด ๊ฐ๋ฐ์ ํ ํ์ ์์ด ์ด๋ฏธ ๋ง๋ค์ด ๋์ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก "๋ธ๋ก"์ฒ๋ผ ๊ฐ์ ธ๋ค ์ธ ์ ์๊ฒ ๋ฉ๋๋ค. ๋๋ถ์ ๊ฐ๋ฐ ์๊ฐ์ด ์ค์ด๋ค๊ณ ๊ฐ๋ฐ์ ํ์ํ ๋น์ฉ๋ ์๋ ์ ์์ต๋๋ค. ๋ํ API ๋ฌธ์๋ง ๋ณด๋ฉด ๋๊ตฌ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ด, ํ์
์ ์ฉ์ดํ๊ณ ์ ์ง๋ณด์๋ ์์ํฉ๋๋ค.
์์ฆ ๊ธฐ์ ์์ Hotํ IT ์ํคํ ์ฒ์ธ"๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ(MSA) ๋ํ API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๋ด ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์๊ฒ ๋๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํ ๋ค์, ์ด๋ค์ API ํํ๋ก ์ฐ๊ฒฐํ์ฌ ์ํธ ํต์ ํ๊ฒ ํ๋ ๊ตฌ์กฐ์ ๋๋ค.
2) ์ ์ฐ์ฑ, ํ์ฅ์ฑ
์๋น์ค์ ์ ๊ท ๊ฐ๋ฐ๊ณผ ์น/์ฑ ๋ฑ ์ฑ๋ ํ์ฅ์ด ์ฝ์ต๋๋ค. ํนํ ํ์ฌ ์๋น์ค์์ ์ฐ๊ณ์ ์์ด ํฐ ๊ฐ์ ์ ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฒ์ ์์ฌ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋กญ๊ฒ ์ถ๊ฐํ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ, "์ง๋" ์์ ๋ง์ง์ ํ์ํ๋ ๊ฒ์ด๋ผ๋ฉด, "์ง๋"๋ฅผ ์ง์ ๊ฐ๋ฐํ๋ ๊ฒ๋ณด๋ค ๊ตฌ๊ธ์ด๋ ๋ค์ด๋ฒ๊ฐ ์ ๊ณตํ๋ ์ง๋ API๋ฅผ ๋ถ๋ฌ์ค๋ฉด ์ฐธ ํธํ๊ฒ ์ฃ ?
์ด๋ ๋ฏ, API๋ ๊ณ ๊ฐ๊ณผ ํ์
์ ์๊ตฌ์ฌํญ์ ๋ฐ์ํ ์๋ก์ด ์๋น์ค๋ฅผ ๋ฐ ๋น ๋ฅด๊ฒ ์ถ์ํ ์ ์๋๋ก ๋๋ ๋ ๋ ํ ๊ธฐ์ ์
๋๋ค.
4. Open API๋ ๋ญ๊ฐ์?
Open API๋ ๋ง ๊ทธ๋๋ก "๋๊ตฌ๋ ์ธ ์ ์๋๋ก ๊ณต๊ฐ๋(Open) API"๋ฅผ ๋ปํฉ๋๋ค.
๋ํ์ ์ผ๋ก, ์ ๋ถ๋ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ(www.data.go.kr)์ ํตํด ๊ตญ๊ฐ๊ธฐ๊ด์ด ๋ณด์ ํ ์๋ง์ ๋ฐ์ดํฐ๋ฅผ API ํํ๋ก ๋ฌด๋ฃ ๊ณต๊ฐํ๊ณ ์์ต๋๋ค. ์ง์ญ๋ณ ์ฝ๋ก๋ ๋ฐ์ํํฉ, ์์ธ์ ๋ฐ๋ฆ์ด ์ด์ฉํํฉ, ๋ฏธ์ธ๋จผ์ง ์ธก์ ์ ๋ณด ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ตญ๋ฏผ์ด ์์ ๋กญ๊ฒ ๊ฐ์ ธ๋ค๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ์ํํ๊ฑฐ๋ ์ ์ตํ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ์ธ ์ ์๋๋ก ์ ๊ทน์ ์ผ๋ก ์ฅ๋ คํ๋ ๊ฒ์ด์ฃ .
๊ตญ๊ฐ์ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ๋์ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ(www.data.go.kr)์์๋ API ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฌด๋ฃ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
๋ฟ๋ง ์๋๋ผ, ์นด์นด์ค, ๋ค์ด๋ฒ, Google ๋ฑ ์๋ง์ ๋ฏผ๊ฐ ๊ธฐ์ ๋ค ๋ํ ์์ฌ๊ฐ ์ ๊ณตํ๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค(์ง๋ ์ฑ, ํฌํธ ๊ฒ์ํ๊ธฐ, ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋ฑ)์ ์ผ๋ฐ ์ฌ๋๋ค๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋๋ก API๋ฅผ ์คํํด๋์์ต๋๋ค.
API๋ก ๊ตฌํํ๋ "์นด์นด์คํก์ผ๋ก ๋ก๊ทธ์ธ" ๊ธฐ๋ฅ ์์ (์ถ์ฒ: https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api)
์ด๋ ๊ฒ Open API๊ฐ ์ ํํ๋ ์ด์ ๋, ์๋ฌด๋๋ ํ๋ซํผ์ ์ํฅ๋ ฅ์ด ๊ณง ๋์ด ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋ฌด๋๋ ์์ฌ์ ์๋น์ค๊ฐ ํ์ฌ์ ๋ค์ํ ์๋น์ค์์๋ ํ์ฉ๋๋ค๋ฉด, ์ฌ์ฉ์ ์๊ฐ ์ฆ๊ฐํ๋ ๋ฑ ์๋น์ค ์์ฒด์ ๊ฐ์น๋ ๋์์ง ๊ฒ์
๋๋ค.
๋ํ API๋ฅผ ํตํด ์๋ก์ด ์์ต์์ ์ฐฝ์ถํ๋ ๊ฒ๋ ๊ธฐ์ ๋ค์ด Open API๋ฅผ ๋์ ํ๋ ์ฃผ์ ๋์ธ ์ค ํ๋์ ๋๋ค. API์ ํธ์ถ ์์ ์ ํ์ ๋๊ณ , ๋ฌด๋ฃ ์ ๊ณต๋ ์ด์์ ๋์ ๋ฐ๋๋ค๊ฑฐ๋(๋จ๊ณ์ ์ ๋ฃํ), ์์ฌ๊ฐ ๊ตฌ์ถํ ๊ฒฐ์ ์์คํ ์ API ํํ๋ก ํ์ฌ ์๋น์ค์ ์ฐ๊ณํ ์ ์๋๋ก ํ์ฌ ์์๋ฃ ์์ต์ ์ฐฝ์ถํ๋ ๋ฑ์ด ์๊ฒ ์ต๋๋ค.
5. ๋ง์ง๋ง์ผ๋ก, REST API๋?
์์์ ๋ง์๋๋ฆฐ ๋ฐ์ ๊ฐ์ด, API๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์ ์ค ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ์์ด ๋ฐ๋ก REST (Representational State Transfer) ๋ฐฉ์์ ๋๋ค. "REST ํ ๋ฐฉ์", "REST ์์น์ ๋ฐ๋ฅด๋ API"๋ผ ํ์ฌ, RESTful API ํน์ REST API๋ก ๋ถ๋ฆฝ๋๋ค.
๋๋ฌด์ง ์ด๋ฆ๋ง์ผ๋ก๋ ๋ฌด์จ ์๋ฏธ์ธ ์ง ์ดํดํ ์๊ฐ ์์ฃ ? ์ผ๋จ "Represent"๊ฐ "ํํํ๋ค"๋ ๋ป์ธ ์ ์ ์ผ๋์ ๋๋ฉด, "์์ฒญ ์์ฒด๋ง์ผ๋ก ๋ด๊ฐ ๋ญ ์ํ๋์ง ์๊ฒ ํ์ (= ์์ฒญ ์์ฒด๋ก ๋๋ฅผ "ํํ"ํ์!)"๋ ์ฌ์์ผ๋ก ๋ฑ์ฅํ๋ค๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๊ณ ์ ํ url(๋งํฌ)์ ํตํด ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ๊ฒ ๋๋๋ฐ, ์ด url๋ง ๋ณด๋ฉด ์ด๋ค ์์ฒญ์ธ ์ง ๋ฐ๋ก ์ถ๋ก ํ ์ ์์ต๋๋ค.
๋จ, ์์ธํ ๊ฐ๋ ์ ์ค๋ช ํ๋ ค๋ฉด ๋๋ฌด ๊ธธ์ด์ง ๊ฒ ๊ฐ์, ์ค๋์ ๊ฐ๋จํ ์ด ๋ฐฉ์์ด ์น์ ์ฅ์ ์ ๊ฐ์ฅ ์ ์ด๋ฆด ์ ์๋ ๊ฐ์ฅ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ธ ๊ตฌํ ๋ฐฉ์์ด๋ผ๋ ์ ๋ง ์ง๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
ํด๋น ๊ธ์ https://enjoyinjoanne.tistory.com/56 ์์ ๋ฐ์ทํ์์ต๋๋ค.
'DevOps | Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SSH Known-Host] - Failed to load HostKeys from /root/.ssh/known_hosts. You will need to explicitly load HostKeys ์ค๋ฅ ๋ฐ์์ (0) | 2022.04.04 |
---|---|
SSH(Secure Shell) (0) | 2021.09.30 |