00. API ?
1) API
: ์ ํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด๋ฅผ ๋น๋ํ๊ณ ํตํฉํ๊ธฐ ์ํ ์ ์ ๋ฐ ํ๋กํ ์ฝ ์ธํธ์ธ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค(Application Programming Interface)
- ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ์ํธ์์ฉํ๋ ๊ฒ์ ๋์์ฃผ๋ ๋งค๊ฐ์ฒด
01. API์ ์ญํ
1. ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ถ์ ๊ตฌ ์ญํ
: ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์์คํ ์ ๋ณด๋ค์ด ์ ์ฅ๋๋ฏ๋ก, ๋ชจ๋ ์ฌ๋๋ค์ด ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์์ผ๋ฉด ์๋๋ค.
⇒ API๋ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ถ์ ๊ตฌ ์ญํ ์ ํ๋ฉฐ, ํ์ฉ๋ ์ฌ๋๋ค์๊ฒ๋ง ์ ๊ทผ์ฑ์ ๋ถ์ฌํ๋ค.
2. ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ธฐ๊ธฐ๊ฐ ์ํํ๊ฒ ํต์ ํ ์ ์๋๋ก ๋์
: API๋ ์ ํ๋ฆฌ์ผ์ด์
(ํ๋ก๊ทธ๋จ ๋ฑ)๊ณผ ๊ธฐ๊ธฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ํํ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ๋๋ ์ญํ ์ ํ๋ค.
3. API๋ ๋ชจ๋ ์ ์์ ํ์คํํ๋ค.
: API๋ ๋ชจ๋ ์ ์์ ํ์คํํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๊ณ/ ์ด์์ฒด์ ๋ฑ๊ณผ ์๊ด์์ด ๋๊ตฌ๋ ๋์ผํ ์ก์ธ์ค๋ฅผ ์ป์ ์ ์๋ค.
02. API ์ข ๋ฅ : ํ๋ผ์ด๋น, ํผ๋ธ๋ฆญ, ํํธ๋
ํ๋ผ์ด๋น
API๋ฅผ ๋ด๋ถ์์๋ง ์ฌ์ฉํ ์ ์๋๋ก ํ๋ฉฐ, ๊ธฐ์ ์ด API๋ฅผ ์ต๋ํ์ผ๋ก ์ ์ดํ ์ ์๋ค.
ํํธ๋
API๋ฅผ ํน์ ๋น์ฆ๋์ค ํํธ๋์ ๊ณต์ ํ๋ฉฐ, ํ์ง ์ ํ ์์ด ์ถ๊ฐ ์์ต์์ ์ฐฝ์ถํ ์ ์๋ค.
ํผ๋ธ๋ฆญ
API๊ฐ ๋ชจ๋์๊ฒ ์ ๊ณต๋๋ฉฐ, ์ 3์๊ฐ API์ ์ํธ ์์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ์ฌ ํ์ ์ ๋์ด๋ผ ์ ์๋ค.
03. API ์ฅ๋จ์
ํํธ๋์ ํผ๋ธ๋ฆญ API์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
- ์๋ก์ด ์์ต ์ฑ๋์ ํ๋ณดํ๊ฑฐ๋ ๊ธฐ์กด ์์ต ์ฑ๋์ ํ์ฅํฉ๋๋ค.
- ๋ธ๋๋ ์ธ์ง๋๋ฅผ ํ๋ํฉ๋๋ค.
- ์ธ๋ถ ๊ฐ๋ฐ์ ํ์ฉํ๊ณ ํ์ ์ ์ํํ์ฌ ์คํ ํ์ ์ ์ด์งํ๊ฑฐ๋ ํจ์จ์ฑ์ ๋์ ๋๋ค.
ํน์ ํํธ๋ ๋๋ ์ ์ธ๊ณ ์ฌ๋๋ค๊ณผ API๋ฅผ ๊ณต์ ํ๋ฉด ๊ธ์ ์ ์ธ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ ๊ฐ๊ฐ์ ํํธ๋์ญ์ ํตํด ๋ธ๋๋ ์ธ์ง๋ ์ธก๋ฉด์์ ํ์ฌ ์์ฒด์ ๋ง์ผํ ํ๋์ ๋์ด์๋ ์ฑ๊ณผ๋ฅผ ๊ฑฐ๋ ์ ์๋ค. ํผ๋ธ๋ฆญ API์ฒ๋ผ ๊ธฐ์ ์ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ณต๊ฐํ๋ฉด ๊ฐ๋ฐ์๊ฐ API๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฝ์์คํ ์ ๊ตฌ์ถํ ์๋ ์๋ค.
04. Web API
์น API๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฒญ ๋ฉ์์ง์ HTTP๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต ๋ฉ์์ง ๊ตฌ์กฐ์ ์ ์๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฌํ ์๋ต ๋ฉ์์ง๋ ์ผ๋ฐ์ ์ผ๋ก XML ๋๋ JSON ํ์ผ์ ํํ์ด๋ค. ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฝ๊ฒ ์กฐ์ํ ์ ์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ฏ๋ก XML๊ณผ JSON ๋ ๋ค ์์ฃผ ์ฌ์ฉ๋๋ค.
05. SOAP ํ๋กํ ์ฝ๊ณผ Web API, REST ๋น๊ต
์น API๊ฐ ํ์ฐ๋จ์ ๋ฐ๋ผ, ์ ๋ณด ๊ตํ์ ํ์คํํ๊ธฐ ์ํด SOAP(Simple Object Access Protocol)๋ผ๋ ํ๋กํ ์ฝ ์ฌ์์ด ๊ฐ๋ฐ๋์๋ค. SOAP๋ก ์ค๊ณ๋ API๋ XML ๋ฉ์์ง ํ์์ ์ฌ์ฉํ๋ฉฐ HTTP ๋๋ SMTP๋ฅผ ํตํด ์์ฒญ์ ์์ ํ๋ค. SOAP๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ํ๊ฒฝ์์ ์คํํ๊ฑฐ๋ ๋ค์ํ ์ธ์ด๋ก ์์ฑํ์ฌ ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์๋ค.
⇒ (* ์ถํ SOAP์ ๋ํด์๋ ์์๋ณด์์ผ ํ ๊ฒ ๊ฐ์)
๋ ๋ค๋ฅธ ์ฌ์์ REST(Representational State Transfer)๋ก, REST ์ํคํ ์ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ํ๋ ์น API๋ฅผ RESTful API(REST API)๋ผ๊ณ ํ๋ค. SOAP๋ ํ๋กํ ์ฝ์ด์ง๋ง REST๋ ์ํคํ ์ฒ ์คํ์ผ์ด๋ผ๋ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๊ฐ ์์ผ๋ฉฐ ๋ฐ๋ผ์ RESTful ์น API์๋ ๊ณต์์ ์ธ ํ์ค์ด ์๋ค. RESTful ์์คํ ์ ๋ค์ 6๊ฐ์ง ์ฃผ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ํ์ ๋ RESTful API๋ผ๊ณ ๊ฐ์ฃผํ ์ ์๋ค.
- ํด๋ผ์ด์ธํธ ์๋ฒ ์ํคํ ์ฒ: REST ์ํคํ ์ฒ๊ฐ ํด๋ผ์ด์ธํธ, ์๋ฒ, ๋ฆฌ์์ค๋ก ๊ตฌ์ฑ๋๋ฉฐ HTTP๋ฅผ ํตํด ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์คํ ์ดํธ๋ฆฌ์ค: ์์ฒญ์ด ํต๊ณผํ๋ ์๋ฒ์๋ ํด๋ผ์ด์ธํธ ์ฝํ ์ธ ๊ฐ ์ ์ฅ๋์ง ์์ผ๋ฉฐ ๊ทธ ๋์ ์ธ์ ์ํ์ ๋ํ ์ ๋ณด๊ฐ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋ฉ๋๋ค.
- ์บ์ ๊ฐ๋ฅ์ฑ: ์บ์ฑ์ผ๋ก ์ผ๋ถ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ์ ์ํธ ์์ฉ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
- ๊ณ์ธตํ๋ ์์คํ : ์ถ๊ฐ ๊ณ์ธต์ผ๋ก ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ์ ์ํธ ์์ฉ์ ์กฐ์ ํ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ๊ณ์ธต์ ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๊ณต์ ์บ์ ๋๋ ๋ณด์๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ฝ๋ ์จ๋๋งจ๋(์ต์ ): ์๋ฒ๊ฐ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ์กํ์ฌ ํด๋ผ์ด์ธํธ์ ๊ธฐ๋ฅ์ ํ๋ํ ์ ์์ต๋๋ค.
- ํตํฉ๋ ์ธํฐํ์ด์ค: ์ด ์ ์ฝ ์กฐ๊ฑด์ RESTful API ์ค๊ณ์ ํต์ฌ์ด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง ์ธก๋ฉด์ ํฌํจํฉ๋๋ค.
- ์์ฒญ์์ ๋ฆฌ์์ค ์๋ณ: ๋ฆฌ์์ค๊ฐ ์์ฒญ์์ ์๋ณ๋๋ฉฐ ํด๋ผ์ด์ธํธ๋ก ๋ฐํ๋ ํํ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ๋ฉ๋๋ค.
- ํํ์ ํตํ ๋ฆฌ์์ค ์กฐ์: ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ ํ์ผ์ ์์ ํฉ๋๋ค. ์ด ํํ์๋ ์กฐ์ ๋๋ ์ญ์ ๋ฅผ ํ์ฉํ ์ ์๋๋ก ์ถฉ๋ถํ ์์ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
- ์๊ธฐ ๊ธฐ์ ์ (Self-descriptive) ๋ฉ์์ง: ํด๋ผ์ด์ธํธ์ ๋ฐํ๋๋ ๊ฐ ๋ฉ์์ง์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ์ง ์ค๋ช ํ๋ ์ ๋ณด๊ฐ ์ถฉ๋ถํ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ํ ์์ง์ผ๋ก์์ ํ์ดํผ๋ฏธ๋์ด: ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ํ REST ํด๋ผ์ด์ธํธ๊ฐ ํ์ดํผ๋งํฌ๋ฅผ ํตํด ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐํ ๋ชจ๋ ์์ ์ ์ฐพ์ ์ ์์ด์ผ ํฉ๋๋ค.
์ ์ฝ ์กฐ๊ฑด์ด ๋ง์ ๋ณด์ด์ง๋ง ๊ท์ ๋ ํ๋กํ ์ฝ๋ณด๋ค๋ ํจ์ฌ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ RESTful API๊ฐ SOAP๋ณด๋ค ๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค.
์ฐธ๊ณ ์๋ฃ
1. https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces
API๋? What is API? API ๋ป, API ๊ฐ๋ฐ ๋ฐฉ์, API ์ฐ๋, Web API
API ๋ป์ Application Programming Interface๋ก์ ์์ฉํ๋ก๊ทธ๋จ๊ณผ ์ด์์ฒด์ ์ ํต์ ์ ์ฝ๊ฒ ํ๋ ์ฐ๊ฒฐ ์ธํฐํ์ด์ค์ด๋ฉฐ, ๊ฐ๋ฐ ๋ฐ ํตํฉ์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ ์ธํธ๋ฅผ ๋ปํฉ๋๋ค.
www.redhat.com
API๋? ๋น๊ฐ๋ฐ์๊ฐ ์๊ธฐ ์ฝ๊ฒ ์ค๋ช ํด๋๋ฆฝ๋๋ค! - wishket
์ฌ๋ฌ๋ถ์ API๊ฐ ๋ฌด์์ธ์ง ์๊ณ ๊ณ์ ๊ฐ์? ์์ฃผ ๋ฃ์ง๋ง ๊ทธ ๊ฐ๋ ์ด ๋ฌด์์ธ์ง ์ ํํ๊ฒ ์๊ธฐ ์ฝ์ง ์์๋ฐ์. ์ด๋ฒ ์๊ฐ ์์์ผ์ด API๋ ๋ฌด์์ธ์ง ์๊ธฐ ์ฝ๊ฒ ์ค๋ช ํด๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
blog.wishket.com
'๐ป cs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] APS, ์๊ฐ ๋ณต์ก๋ ์ ๋ฆฌ (1) | 2024.01.30 |
---|---|
Spring | AOP์ ๋ํด ์์๋ณด์ !! (0) | 2023.07.27 |
IT ์๋น์ค, Cloud ์๋น์ค์ ๋ํด ์์๋ณด์ (0) | 2023.07.12 |
์นดํ ์ผ | 2์ฃผ์ฐจ ๊ณผ์ issue ํด๊ฒฐ (3) | 2023.07.11 |
GIT | GIT ์์ ์ ๋ณต (1) (0) | 2023.06.15 |