Python / API-тай ажиллах

API-тай ажиллах

API (Application Programming Interface) нь нэг программаас өөр программын өгөгдөлд хандах стандарт арга. Цаг агаар мэдэх, мөнгөн ханш татах, газрын зураг ашиглах — бүгд API дамжуулна. Python-д requests пакеж ашиглан хэдхэн мөрийн кодоор ямар ч нийтийн API-тай ажиллаж болно.

Анхны API дуудлага

Суулгаагүй бол: pip install requests

Нийтийн тест API болох jsonplaceholder.typicode.com-ийг ашиглана — бүртгэлгүйгээр ажилладаг.

python
import requests

# GET хүсэлт — өгөгдөл авах
хариу = requests.get("https://jsonplaceholder.typicode.com/users/1")

print(хариу.status_code)   # 200
хэрэглэгч = хариу.json()
print(хэрэглэгч["name"])   # Leanne Graham
print(хэрэглэгч["email"])  # Sincere@april.biz

.json() нь JSON хариуг шууд Python dict болгон хувиргана — json.loads() дуудахгүйгээр.

Query parameter — хайлт, шүүлт

Ихэнх API нь URL-д нэмэлт параметр дамжуулж өгөгдлийг шүүх боломж олгодог:

python
import requests

# params dict — URL-д автоматаар нэмэгдэнэ
# https://jsonplaceholder.typicode.com/posts?userId=1
параметрүүд = {"userId": 1}
хариу = requests.get(
    "https://jsonplaceholder.typicode.com/posts",
    params=параметрүүд
)

нийтлэлүүд = хариу.json()
print(f"Нийтлэлийн тоо: {len(нийтлэлүүд)}")

for нийтлэл in нийтлэлүүд[:3]:
    print(f"- {нийтлэл['title']}")

params= ашиглах нь URL-д гар аргаар ?userId=1 нэмэхээс аюулгүй — тусгай тэмдэгтийг автоматаар encode хийнэ.

POST, PUT, DELETE — өгөгдөл илгээх

GET нь зөвхөн унших, POST нь шинэ бүртгэл үүсгэх, PUT нь засах, DELETE нь устгахад ашиглагдана:

python
import requests

# POST — шинэ нийтлэл үүсгэх
шинэ_нийтлэл = {
    "title": "Python сурах нь хялбар",
    "body": "Зөв сурах замыг дагавал хэн ч Python сурч чадна.",
    "userId": 1
}

хариу = requests.post(
    "https://jsonplaceholder.typicode.com/posts",
    json=шинэ_нийтлэл      # dict-ийг автоматаар JSON болгож илгээнэ
)

print(хариу.status_code)   # 201 Created
үүссэн = хариу.json()
print(f"Шинэ ID: {үүссэн['id']}")

API key ба header дамжуулах

Ихэнх бодит API нь API key шаарддаг — таныг таньж, хандалтыг хянахад хэрэглэнэ. Key-г Authorization header-т дамжуулна:

python
import requests

API_KEY = "таны_api_key_энд"   # .env файлаас уншина

толгой = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

хариу = requests.get(
    "https://api.example.com/protected-data",
    headers=толгой
)

if хариу.status_code == 200:
    print(хариу.json())
elif хариу.status_code == 401:
    print("API key буруу эсвэл дуусгавар болсон")

Анхааруулга: API key-г кодоор шууд бичихгүй. .env файлд хадгалж, os.environ ашиглан уншина — дараагийн хичээлүүдэд дэлгэрэнгүй үзнэ.

Бодит жишээ — цаг агаарын API

Үнэгүй цаг агаарын API болох open-meteo.com нь API key шаардахгүй:

python
import requests

# Улаанбаатарын цаг агаар
параметрүүд = {
    "latitude": 47.9077,
    "longitude": 106.8832,
    "current_weather": True
}

хариу = requests.get(
    "https://api.open-meteo.com/v1/forecast",
    params=параметрүүд
)

өгөгдөл = хариу.json()
цаг = өгөгдөл["current_weather"]
print(f"Улаанбаатар: {цаг['temperature']}°C, салхи {цаг['windspeed']} км/ц")

Дараагийн хичээлд:

Virtual Environment — төслүүдийн хооронд пакежийн хувилбарыг тусгаарлах, venv хэрхэн үүсгэж ажиллуулах талаар сурна.