๐ 1. API๋?
API๋ Application Programming Interface์ ์ค์๋ง๋ก,
“์ํํธ์จ์ด๋ผ๋ฆฌ ์ํตํ๊ฒ ํด์ฃผ๋ ํต๋ก”๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
์ฝ๊ฒ ๋งํด,
"๋ด๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๊ฒ ๋ง์ ๊ฑธ๊ณ , ์๋ต์ ๋ฐ๋ ๋ฐฉ์"
์๋ฅผ ๋ค์ด:
- ๋ด ์ฑ์์ ๋ ์จ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค → ๋ ์จ API ์์ฒญ
- ์น์ฌ์ดํธ์์ ์นด์นด์ค ๋ก๊ทธ์ธ์ ํ๊ณ ์ถ๋ค → ์นด์นด์ค ๋ก๊ทธ์ธ API ์ฌ์ฉ
- ์ผํ๋ชฐ์์ ๊ฒฐ์ ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ๋ค → ๊ฒฐ์ ์ฌ API ์ฐ๋
์ฆ, API๋ ์ธ๋ถ์ ๊ธฐ๋ฅ์ ๋ด ์๋น์ค์์ ์ฝ๊ฒ ํ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ๋ค๋ฆฌ์ ๋๋ค.
โ๏ธ 2. API๋ ์ด๋ป๊ฒ ๋์ํ ๊น?
API๋ ๋ณดํต ํด๋ผ์ด์ธํธ(์์ฒญ)์ ์๋ฒ(์๋ต) ์ฌ์ด์์ ์ด๋ ๊ฒ ์๋ํฉ๋๋ค:
[๋ด ํ๋ก๊ทธ๋จ] → ์์ฒญ(Request) → [API ์๋ฒ]
↓
← ์๋ต(Response) ←
์๋ฅผ ๋ค์ด, ๋ค์ด๋ฒ ์ง๋ API์ “๊ฐ๋จ์ญ” ์ ๋ณด๋ฅผ ์์ฒญํ๋ค๋ฉด:
- ๋ด ์ฝ๋๊ฐ "https://map.naver.com/api/locations?q=๊ฐ๋จ์ญ" ์ฃผ์์ ์์ฒญ์ ๋ณด๋
- ๋ค์ด๋ฒ ์๋ฒ๊ฐ “๊ฐ๋จ์ญ” ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฐพ์์ JSON ํ์์ผ๋ก ์๋ต์ ์ค
- ๋ด ์ฑ์์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ํ๋ฉด์ ์ถ๋ ฅ
๐ฌ 3. ์์ฒญ/์๋ต์ ์ด๋ค ํ์์ผ๊น?
๋๋ถ๋ถ์ API๋ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ฉฐ, ์์ฒญ๊ณผ ์๋ต์ ๋ณดํต JSON ํฌ๋งท์ผ๋ก ์ค๊ฐ๋๋ค.
์) ๋ ์จ API ์์ฒญ ๊ฒฐ๊ณผ
{
"location": "Seoul",
"temperature": 29.4,
"condition": "Sunny"
}
→ ๋ด๊ฐ ์ด๊ฑธ ๋ฐ์์ ์ฑ์์ “์์ธ: ๋ง์, 29.4°C” ์์ผ๋ก ๋ณด์ฌ์ค ์ ์๋ ๊ฑฐ์ฃ .
๐ 4. ์ธ์ฆ(Authentication)์ ์ ํ์ํ ๊น?
API๋ ๊ทธ๋ฅ ๋๊ตฌ์๊ฒ๋ ๋ฌด์ ํ ์ ๊ณต๋๋ฉด ์ ๋ฉ๋๋ค.
๊ทธ๋์ ๋ณดํต API Key๋ Token ๊ฐ์ ์ธ์ฆ ๋ฐฉ์์ด ์์ต๋๋ค.
- ์นด์นด์ค API → Authorization: KakaoAK <API_KEY> ํค๋ ํ์
- JWT ์ธ์ฆ API → ๋ก๊ทธ์ธ ํ ๋ฐ์ ํ ํฐ์ ํจ๊ป ์ ์ก
โ๏ธ ์ธ์ฆ์ด ์์ผ๋ฉด ๋ณด์ ์ํ + ํธ๋ํฝ ๋จ์ฉ
๐ 5. ๋ค๋ฅธ ์์คํ ๊ณผ์ ์ฐ๋์ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๊น?
์์๋ก ์ค๋ช ํ ๊ฒ์:
โ ์นด์นด์คํก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์๋น์ค ๋ง๋ค๊ธฐ
- ์นด์นด์คํก ๋ฉ์์ง API ๋ฌธ์๋ฅผ ๋ณด๊ณ
- ํ์ํ ์ธ์ฆ์ ๋ฐ๊ณ
- ๋ด ์ฑ์์ ์ฌ์ฉ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ธฐ ์ํ ์์ฒญ ์ฝ๋๋ฅผ ์์ฑ
- ์นด์นด์ค ์๋ฒ์์ ์ค์ ๋ฉ์์ง๋ฅผ ์ ์ก
๐ ์ด๋ฐ ๊ฑธ ๋ณดํต "API ์ฐ๋"์ด๋ผ๊ณ ํฉ๋๋ค.
๐ 6. API์ ์ค์ ์ฌ์ฉ ์์
๋ถ์ผ ์ฌ์ฉํ๋ API ์์
| ์ง๋ | ๊ตฌ๊ธ ์ง๋, ์นด์นด์ค๋งต API |
| ๊ฒฐ์ | ํ ์คํ์ด, ํ์ด์ฝ, ์์ํฌํธ API |
| ๋ก๊ทธ์ธ | ๊ตฌ๊ธ ๋ก๊ทธ์ธ, ๋ค์ด๋ฒ ๋ก๊ทธ์ธ API |
| ๋ ์จ | OpenWeather API, ๊ธฐ์์ฒญ ๋ฐ์ดํฐ API |
| ๋ฒ์ญ | Papago, Google Translate API |
๐งฉ 7. ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ API๋ก ์ฐ๊ฒฐ๋๋ค?
๋ง์ต๋๋ค!
- ํ๋ก ํธ์๋(React, Vue ๋ฑ)๋ ๋ฒํผ ํด๋ฆญ → API ์์ฒญ
- ๋ฐฑ์๋(Django, Spring ๋ฑ)๋ API ์์ฒญ์ ๋ฐ์ → DB ์กฐํํ๊ณ → ์๋ต ๋ฐํ
→ ๋ชจ๋ ์ฑ์ ๊ฒฐ๊ตญ API ์ค์ฌ์ผ๋ก ์๋ํฉ๋๋ค
โ ๋ง๋ฌด๋ฆฌ ์์ฝ
์ง๋ฌธ ์์ฝ
| API๋? | ํ๋ก๊ทธ๋จ๋ผ๋ฆฌ ๋ํํ๋ ์ธํฐํ์ด์ค |
| ์ด๋ป๊ฒ ๋์ํด? | ํด๋ผ์ด์ธํธ๊ฐ HTTP ์์ฒญ → ์๋ฒ๊ฐ JSON ์๋ต |
| ๋ฌด์๊ณผ ์ฐ๋๋ผ? | ๋ค๋ฅธ ํ์ฌ์ ์๋น์ค, ์๋ฒ, DB ๋ฑ ๋ค์ํ๊ฒ |
| ์ ํ์ํด? | ๋จ์ด ๋ง๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ธ ์ ์์ผ๋๊น! |
์ด์ API๊ฐ ์ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ํ์ฉ๋๋์ง ๊ฐ์ด ์ค์
จ๋์?
๋ค์ ๊ธ์์๋ Django์์ REST API๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋,
Swagger๋ก ๋ฌธ์๋ฅผ ์๋ํํ๋ ๊ณผ์ ๋ ๋ค๋ค๋ณผ ์์ ์ด์์. ๊ด์ฌ ์์ผ์๋ค๋ฉด ๊ตฌ๋
์ด๋ ๋๊ธ๋ ํ์ํฉ๋๋ค! ๐