API-тай ажиллах
API (Application Programming Interface) нь нэг программаас өөр программын өгөгдөлд хандах стандарт арга. Цаг агаар мэдэх, мөнгөн ханш татах, газрын зураг ашиглах — бүгд API дамжуулна. Python-д requests пакеж ашиглан хэдхэн мөрийн кодоор ямар ч нийтийн API-тай ажиллаж болно.
Анхны API дуудлага
Суулгаагүй бол: pip install requests
Нийтийн тест API болох jsonplaceholder.typicode.com-ийг ашиглана — бүртгэлгүйгээр ажилладаг.
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-д нэмэлт параметр дамжуулж өгөгдлийг шүүх боломж олгодог:
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 нь устгахад ашиглагдана:
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-т дамжуулна:
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 шаардахгүй:
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 хэрхэн үүсгэж ажиллуулах талаар сурна.