AI ๋น๋ ์ปค๋ฎค๋ํฐ ์ค์ต์ฉ โ Son๋ ์ ์
1. ์ ํค ์๋ API๋ถํฐ ์์ํ๋์?
| ์ฅ์ | ์ค๋ช |
|---|---|
| ์ฆ์ ์คํ | ํ์๊ฐ์
/์น์ธ/ํค ๋ฐ๊ธ ์์ด ๋ฐ๋ก curl ๊ฐ๋ฅ |
| ๋ฆฌ์คํฌ ์ ๋ก | API ํค ๋ ธ์ถ, ๊ณผ๊ธ, ์ฌ์ฉ๋ ์ด๊ณผ ๊ฑฑ์ ์์ |
| ๊ฐ๋ ์ง์ค | HTTP ์์ฒญ/์๋ต, JSON ํ์ฑ, ์ํ ์ฝ๋ ๋ฑ ํต์ฌ๋ง ํ์ต |
| ๋น ๋ฅธ ํผ๋๋ฐฑ | ์ฝ๋ โ ์คํ โ ๊ฒฐ๊ณผ ํ์ธ๊น์ง 10์ด ์ด๋ด |
2. ๊ฒ์ฆ๋ ํค ์๋ API ๋ชฉ๋ก
๐ค๏ธ ๋ ์จ & ํ๊ฒฝ
Open-Meteo (๋ ์จ ์๋ณด)
# ์์ธ 3์ผ๊ฐ ์๊ฐ๋ณ ๊ธฐ์จ + ๊ฐ์ํ๋ฅ
curl "https://api.open-meteo.com/v1/forecast?latitude=37.5665&longitude=126.9780&hourly=temperature_2m,precipitation_probability&daily=weather_code,temperature_2m_max,temperature_2m_min&timezone=Asia%2FSeoul&forecast_days=3"
- ํน์ง: 30+ ๊ธฐ์๋ชจ๋ธ, ์ญ์ฌ ๋ ์จ(1940๋ ~), ํด์/์ฐ์ /๋์ ์ ์ฉ ํ๋ผ๋ฏธํฐ
- ์๋ต ์์:
{
"latitude": 37.55,
"hourly": {
"time": ["2026-06-11T00:00", "2026-06-11T01:00", ...],
"temperature_2m": [22.1, 21.5, 21.0, ...],
"precipitation_probability": [0, 0, 5, ...]
}
}
Open-Meteo Air Quality (๋๊ธฐ์ง)
# ์์ธ ๋ฏธ์ธ๋จผ์ง + ์์ธ์ ์ง์
curl "https://air-quality-api.open-meteo.com/v1/air-quality?latitude=37.5665&longitude=126.9780&hourly=pm10,pm2_5,uv_index&timezone=Asia%2FSeoul&forecast_days=1"
- ํน์ง: CAMS ์ ๋ฝ ๋๊ธฐ์ง ๋ชจ๋ธ, PM2.5/PM10/์ค์กด/์ด์ฐํ์ง์ ๋ฑ
๐บ๏ธ ์ง๋ฆฌ & ์์น
Nominatim (OpenStreetMap ์ฃผ์ ๊ฒ์)
# "์์ธ์ญ" ๊ฒ์ โ ์๋/๊ฒฝ๋ ๋ฐํ
curl "https://nominatim.openstreetmap.org/search?q=Seoul+Station&format=json&limit=2"
- ์๋ต ์์:
[{
"display_name": "์์ธ์ญ, ์ธ์ข
๋๋ก, ๋ด๋๋2๊ฐ, ์ค๊ตฌ, ์์ธํน๋ณ์, 04509, ๋ํ๋ฏผ๊ตญ",
"lat": "37.5554175",
"lon": "126.9725862",
"class": "railway",
"type": "station"
}]
- ์ฃผ์: ์ฌ์ฉ ์ ์ฑ ์ค์ (1์ด๋น 1์์ฒญ ๊ถ์ฅ, User-Agent ํ์)
๐ ๋ ์ง & ์๊ฐ
Nager.Date (๊ณตํด์ผ)
# 2026๋
ํ๊ตญ ๊ณตํด์ผ
curl "https://date.nager.at/api/v3/PublicHolidays/2026/KR"
- ์๋ต ์์:
[{
"date": "2026-01-01",
"localName": "์ํด",
"name": "New Year's Day",
"countryCode": "KR"
}]
- ํน์ง: 100+ ๊ตญ๊ฐ ์ง์, ISO 3166-1 alpha-2 ๊ตญ๊ฐ์ฝ๋ ์ฌ์ฉ
๐ ๋ฌธํ & ๋ฐ์ดํฐ
Art Institute of Chicago (๋ฏธ์ ํ ๊ฒ์)
# ๋ชจ๋ค ์ํ ๊ฒ์
curl "https://api.artic.edu/api/v1/artworks/search?q=monet&limit=2&fields=id,title,artist_display,image_id"
- ์๋ต ์์:
{
"data": [{
"id": 16568,
"title": "Water Lilies",
"artist_display": "Claude Monet (French, 1840โ1926)",
"image_id": "3c27b499-af56-f0d5-93b5-a7f2f1ad5813"
}]
}
- ์ด๋ฏธ์ง URL:
https://www.artic.edu/iiif/2/{image_id}/full/843,/0/default.jpg
Open Library (๋์ ๊ฒ์)
# ์ฑ
๊ฒ์
curl "https://openlibrary.org/search.json?q=atomic+habits&limit=2"
- ํน์ง: ISBN, ์ ์, ์ถํ๋ ๋, ํ์ง ์ด๋ฏธ์ง, ์ ์์ฑ ์ ๋ฌด
GBIF (์๋ฌผ์ข ๋ฐ์ดํฐ)
# ์๋ฌผ์ข
๊ฒ์
curl "https://api.gbif.org/v1/species/search?q=cat&limit=2"
- ํน์ง: 20์ต+ ์๋ฌผ ๊ธฐ๋ก, ํ๋ช /๋ถ๋ฅ๊ณ์ธต/์์์ง ๋ฐ์ดํฐ
๐งช ํ ์คํธ & ์ํ
JSONPlaceholder (๊ฐ์ REST API)
# ํ ์ผ 1๊ฐ ์กฐํ
curl "https://jsonplaceholder.typicode.com/todos/1"
- ์๋ต ์์:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
- ํน์ง: GET/POST/PUT/DELETE ๋ชจ๋ ์ง์, CRUD ์ ๊ณผ์ ์ค์ต ๊ฐ๋ฅ
DummyJSON (๊ฐ์ ์ผํ ๋ฐ์ดํฐ)
# ์ํ ๊ฒ์
curl "https://dummyjson.com/products/search?q=phone&limit=2"
- ํน์ง: 100+ ์ ํ, ์นดํ ๊ณ ๋ฆฌ, ๊ฐ๊ฒฉ, ์ฌ๊ณ , ๋ฆฌ๋ทฐ, ์ฅ๋ฐ๊ตฌ๋ API
๐ ๊ธฐํ ์ ์ฉํ API
| API | ์๋ํฌ์ธํธ ์์ | ์ฉ๋ |
|---|---|---|
| Open Brewery DB | api.openbrewerydb.org/v1/breweries?by_city=san_diego | ์ง์ญ ๋งฅ์ฃผ ์์กฐ์ฅ ๊ฒ์ |
| USGS ์ง์ง | earthquake.usgs.gov/.../2.5_day.geojson | ์ต๊ทผ ์ง์ง GeoJSON ํผ๋ |
| ISS ํ์ฌ ์์น | api.open-notify.org/iss-now.json | ๊ตญ์ ์ฐ์ฃผ์ ๊ฑฐ์ฅ ์ค์๊ฐ ์์น |
3. ์ค์ํ ์ ํฉ ์์คํ ์์ 5๊ฐ์ง
์์ 1: ๐ค๏ธ ์ค๋์ ์ธ์ถ ํ๋จ๊ธฐ
์กฐํฉ: Open-Meteo(๋ ์จ) + Open-Meteo Air(๋๊ธฐ์ง)
์
๋ ฅ: ํ์ฌ ์์น(์๋/๊ฒฝ๋)
โ
API ํธ์ถ: ๊ธฐ์จ + ๊ฐ์ํ๋ฅ + ๋ฏธ์ธ๋จผ์ง + ์์ธ์
โ
ํ๋จ ๋ก์ง:
- ๊ฐ์ํ๋ฅ > 60% โ "์ฐ์ฐ ์ฑ๊ธฐ์ธ์"
- PM2.5 > 75 โ "๋ง์คํฌ ๊ถ์ฅ"
- UV > 6 โ "์์ธ์ ์ฐจ๋จ์ ํ์"
- ๊ธฐ์จ < 5ยฐC โ "ํจ๋ฉ ํ์"
โ
์ถ๋ ฅ: ํ ์ค ์์ฝ + ์์ธ ์์น
์ค์ต ํฌ์ธํธ: ์กฐ๊ฑด๋ฌธ + JSON ํ์ฑ + ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ
์์ 2: ๐บ๏ธ ์ฃผ์ โ ์ขํ ๋ณํ๊ธฐ (์ง์ค์ฝ๋ฉ)
์กฐํฉ: Nominatim
์
๋ ฅ: "์์ธ์ญ" ๋๋ "๊ฐ๋จ๊ตฌ ํ
ํค๋๋ก 152"
โ
API ํธ์ถ: ์ฃผ์ ๋ฌธ์์ด โ ์๋/๊ฒฝ๋ ๋ฐํ
โ
์ถ๋ ฅ: ์ง๋ ๋งํฌ (Google Maps / Naver Map) + ํ์ ๊ตฌ์ญ ์ ๋ณด
์ค์ต ํฌ์ธํธ: URL ์ธ์ฝ๋ฉ, ๋ฐฐ์ด ํ์ฑ, ์ธ๋ถ ๋งํฌ ์์ฑ
์์ 3: ๐ ์์ ์ผ ๊ณ์ฐ๊ธฐ
์กฐํฉ: Nager.Date(๊ณตํด์ผ) + Python ๋ ์ง ์ฐ์ฐ
์
๋ ฅ: ์์์ผ, ์ข
๋ฃ์ผ, ๊ตญ๊ฐ์ฝ๋(KR)
โ
API ํธ์ถ: ํด๋น ๊ธฐ๊ฐ ๊ณตํด์ผ ๋ชฉ๋ก
โ
๊ณ์ฐ: ์ ์ฒด ์ผ์ - ์ฃผ๋ง ์ - ๊ณตํด์ผ ์
โ
์ถ๋ ฅ: ์ค์ ์์
์ผ ์ + ๊ณตํด์ผ ๋ชฉ๋ก
์ค์ต ํฌ์ธํธ: ๋ ์ง ์ฐ์ฐ, ๋ฆฌ์คํธ ํํฐ๋ง, ๊ตญ๊ฐ ์ฝ๋ ํ๋ผ๋ฏธํฐํ
์์ 4: ๐จ ๋๋ค ๋ฏธ์ ํ ์ถ์ฒ๊ธฐ
์กฐํฉ: Art Institute of Chicago
์
๋ ฅ: ์๊ฐ๋ช
๋๋ ํค์๋ ("monet", "impressionism")
โ
API ํธ์ถ: ์ํ ๊ฒ์
โ
๋๋ค ์ ํ: ๊ฒฐ๊ณผ ์ค 1๊ฐ
โ
์ถ๋ ฅ: ์ ๋ชฉ + ์๊ฐ + ์ด๋ฏธ์ง URL + "์ด ์ํ์ ์๊ณ ์๋์?"
์ค์ต ํฌ์ธํธ: ๋๋ค ์ ํ, ์ด๋ฏธ์ง URL ์กฐํฉ, ๊ฐ๋จํ ํด์ฆ UI
์์ 5: ๐ ๊ฐ์ธ ํ ์ผ ๊ด๋ฆฌ (CRUD ์ค์ต)
์กฐํฉ: JSONPlaceholder
๊ธฐ๋ฅ:
- GET /todos/1 โ ํ ์ผ ์กฐํ
- POST /todos โ ์ ํ ์ผ ์์ฑ
- PUT /todos/1 โ ํ ์ผ ์์
- DELETE /todos/1 โ ํ ์ผ ์ญ์
โ
์ถ๋ ฅ: ๊ฐ ์์
์ HTTP ์ํ ์ฝ๋ + ์๋ต ๋ณธ๋ฌธ
์ค์ต ํฌ์ธํธ: HTTP ๋ฉ์๋ ์ฐจ์ด, ์ํ ์ฝ๋(200/201/404), JSON ์ง๋ ฌํ
4. ์ค์ต ์ํฌํ๋ก์ฐ (30๋ถ ์ปค๋ฆฌํ๋ผ)
| ๋จ๊ณ | ์๊ฐ | ํ๋ |
|---|---|---|
| 1 | 5๋ถ | curl๋ก API ์ง์ ํธ์ถํด๋ณด๊ธฐ |
| 2 | 5๋ถ | ์๋ต JSON ๊ตฌ์กฐ ํ์ (pretty-print) |
| 3 | 10๋ถ | Python/JS๋ก ์์ฒญ โ ํ์ฑ โ ์ถ๋ ฅ |
| 4 | 5๋ถ | ์กฐ๊ฑด๋ฌธ/ํํฐ๋ก "์๋ฏธ ์๋" ๊ฒฐ๊ณผ ๋ง๋ค๊ธฐ |
| 5 | 5๋ถ | ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์์ ๋์ ์ผ๋ก ํธ์ถ |
5. ์ฃผ์์ฌํญ & ์ฌ์ฉ ์ ์ฑ
| API | ์ ํ์ฌํญ |
|---|---|
| Nominatim | 1์ด๋น 1์์ฒญ ๊ถ์ฅ. ์์ ์ ๋๋ ์ฌ์ฉ ์ ์์ฒด ์๋ฒ ๊ตฌ์ถ ๊ถ์ฅ |
| Open-Meteo | ๋น์์ ์ฉ ๋ฌด๋ฃ. ์์ ์ฉ์ contact ํ์ |
| JSONPlaceholder | ๊ฐ์ ๋ฐ์ดํฐ์ด๋ฏ๋ก POST/PUT/DELETE๋ ์ค์ ์ ์ฅ๋์ง ์์ (ํ ์คํธ์ฉ) |
| Nager.Date | 100+ ๊ตญ๊ฐ ์ง์, rate limit ๋๋ํจ |
6. ๋ค์ ๋จ๊ณ (ํค ํ์ API๋ก ํ์ฅ)
์ด ์์คํ ๋ค์ ํค ํ์ API๋ฅผ ์ถ๊ฐํ๋ฉด:
| ํ์ฌ ์์คํ | ์ถ๊ฐ API | ํ์ฅ ๊ธฐ๋ฅ |
|---|---|---|
| ๋ ์จ ํ๋จ๊ธฐ | OpenWeatherMap(๋ฌด๋ฃ ํฐ์ด) | ๋์๋ช ์ ๋ ฅ, ๋ ์์ธํ ๋ ์จ ์ฝ๋ |
| ์ฃผ์ ๋ณํ๊ธฐ | Kakao ์ง๋ API | ํ๊ตญ ์ฃผ์ ํนํ, ์ ํํ ํ์ ๋ ์ ๋ณด |
| ์์ ์ผ ๊ณ์ฐ | ํ๊ตญ์ํ Open API | ํ์จ + ์์ ์ผ ํตํฉ |
| ๋ฏธ์ ํ ์ถ์ฒ | DALL-E / Stable Diffusion | "์ด ์ํ ์คํ์ผ๋ก AI ์ด๋ฏธ์ง ์์ฑ" |
| ํ ์ผ ๊ด๋ฆฌ | Notion API | ์ค์ ๋ฐ์ดํฐ ์ ์ฅ + ๋๊ธฐํ |
๐ก ํต์ฌ ์์น: ํค ์๋ API๋ก "์์ฒญ-์๋ต-ํ์ฑ-์ถ๋ ฅ"์ ํ๋ฆ์ ์ตํ ๋ค, ํค ํ์ API๋ก ๊ต์ฒดํ๋ฉด 90% ์ฝ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.